检查对象是否已被推入数组Js

时间:2016-04-26 15:13:07

标签: javascript jquery html arrays function

var cardNames= [];

这是我的阵列我推的项目
进入它,但我需要它,所以你只能 将相同的项目推入数组一次 如何检查收到的项目以查看
如果进入的项目已经在阵列中 ,如果是,请发出警报?

3 个答案:

答案 0 :(得分:1)

您可以使用indexOf功能:

if (cardNames.indexOf(newCard) !== -1) {
    console.log('The card has already been inserted!')
} else {
    cardNames.push(newCard);
}

如果您正在使用集合,则可以轻松检查对象的单个属性(它们应具有唯一键或ID),例如使用Array.someArray.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)。