var cardNames= [];
这是我的阵列我推的项目
进入它,但我需要它,所以你只能
将相同的项目推入数组一次
如何检查收到的项目以查看
如果进入的项目已经在阵列中
,如果是,请发出警报?
答案 0 :(得分:1)
您可以使用indexOf
功能:
if (cardNames.indexOf(newCard) !== -1) {
console.log('The card has already been inserted!')
} else {
cardNames.push(newCard);
}
如果您正在使用集合,则可以轻松检查对象的单个属性(它们应具有唯一键或ID),例如使用Array.some
或Array.find
函数
if (cardNames.find( card => card.id === newCard.id ) ) {
// Like before
} else {
// push the new card
}
修改:文档为here
编辑2:虽然Array.find
适用于较新的浏览器,但Array.some
具有更好的向后兼容性。
答案 1 :(得分:1)
如果数组包含对象,则可以使用Array.prototype.some
函数
var arr = [{ a: 1 }, { b: 2 }];
var result = arr.some(e => e.a == 1);
console.log(result); // true
片段
var arr = [{ a: 1 }, { b: 2 }];
var result = arr.some(e => e.a == 1);
document.write(result);
答案 2 :(得分:0)
如果推送的项目是字符串或数字类型,那么它与检查cardName.indexOf(item) !== -1
一样简单。
如果您正在检查对象是否在数组中,那么可能需要通过循环检查并使用某个库来检查相等性(或使用duck typing)。