首页 > 解决方案 > 检查数组是否“包含”Javascript中的项目

问题描述

我试图理解数组“包含”函数。我的目标是确定一个数组是否包含某个项目。它适用于字符串数组,但在使用对象时它不起作用。

    var itemsString = ["name1", "name2"];
    var itemsObject = [{ name: "name1" }, { name: "name2" }];
    var itemToSearch = { name: "name1" };
    
    console.log(itemsString.includes("name1" ));
    console.log(itemsObject.includes(itemToSearch));
    console.log(itemsObject.includes(x => x.name === "name1"));

输出:

“包含”是否适用于对象,还是我需要使用其他功能?

标签: javascript

解决方案


你需要Array.prototype.some()在这种情况下使用。Array.prototype.includes()不接受函数参数*,并且您没有测试严格相等。

const itemsObject = [{ name: "name1" }, { name: "name2" }];

console.log(itemsObject.some(x => x.name === "name1"));

*来自评论部分的同行压力迫使我澄清它includes()确实接受函数参数,但不会使用传递的函数作为谓词来确定给定项目是否匹配。相反,它将尝试在数组中找到与传递的函数严格相等的项。


推荐阅读