Мы это уже разъяснялось, что ваша проблема в том, что вы вернетесь из цикла слишком рано. Я предлагаю другое решение, может быть проще:
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
потому что это возвращает «Нет элемента», если первый элемент не равен datain. – Hacketo
Переместите «return» No item »;' за пределами for (after) – devqon
, потому что в первый раз, когда красный не совпадает к синему, он переходит в инструкцию else, где «No Item» возвращается, и он выходит из функции. –