У меня есть массив классов, все из которых имеют свойство isPurchased, я хочу вернуть последний элемент в массиве, для которого установлено значение true.
function ShopItem = new function(id, name, isPurchased) {
this.id = id;
this.name = name;
this.isPurchased = isPurchased;
}
var apple = ShopItem(1, "Apple", false);
var banana = ShopItem(2, "Banana", true);
var pear = ShopItem(3, "Pear", false);
var shopItems = [apple, banana, pear];
var x = shopItems.lastIndexOf(this.isPurchased == true);
console.log(x);
Когда я делаю console.log(x); Я хочу, чтобы он вернул класс банана.
Все работает нормально, пока я не попытаюсь найти последний элемент, и для этого я попытался использовать:
var x = shopItems.lastIndexOf(this.isPurchased == true);
Но он возвращает -1.
Редактировать:
У меня есть способ решить решение, используя код:
var y = null;
for(var o in shopItems) {
if(shopItems[o].isPurchased == true) {
y = shopItems[o];
}
}
console.log(y);
Но если lastIndexOf может решить мою проблему за меня, то я предпочел бы использовать это вместо того, чтобы изобретать велосипед.
lastIndexOf
ищет фиксированное значение. Он не принимает условие (правильный термин: предикат), и даже если бы это было так, вы не указываете предикаты таким образом. - person Jon   schedule 31.08.2014