下面应该警告“ true”,但是警告“没有项目”。我去哪儿了,我在这段代码上错了。有什么线索吗?
Array.prototype.CheckColor = function (datain) {
for (var i = 0, len = this.length; i < len; i++) {
if (this[i] === datain) {
return true;
} else {
return "No item";
}
}
}
var newstr = "red blue green".split(" ");
var oyrsval = Array.prototype.CheckColor.call(newstr, "blue");
alert(oyrsval);
我们已经解释了您的问题是因为您从循环中返回太早了。我将提出另一个解决方案,可能更简单:
Array.prototype.CheckColor = function (datain) {
return this.some(function(el) {
return datain === el;
}) || 'No item';
}
Array.prototype.some
在这种情况下,此方法很有用。另外,由于您要扩展原型,因此Array.prototype.CheckColor.call(newstr, "blue")
可以直接使用时无需费劲newstr.CheckColor("blue")
。
检查演示。
Array.prototype.CheckColor = function (datain) {
return this.some(function(el) {
return datain === el;
}) || 'No item';
}
var found = "red blue green".split(" ").CheckColor("blue");
var notfound = "red blues green".split(" ").CheckColor("blue");
alert(found);
alert(notfound);
最后,如果仅需测试项目是否在数组中,则可以使用现有Array.prototype.indexOf
方法:
newstr.indexOf("blue") !== -1
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句