首页 > 解决方案 > 在对象数组中搜索元素

问题描述

有人可以指导我如何在数组中找到一个元素吗?

对于存在的元素,我总是认为是错误的。

谢谢你。

arr = new Array;
arr.push({x: "a", y: 1});
arr.push({x: "b", y: 2});
arr.push({x: "c", y: 3});
​
elem = {x: "c", y: 3};
​
if (arr.includes(elem)){
    console.log('true');
} else {
    console.log('false');
}

标签: javascriptarrays

解决方案


您正在寻找{x: "c", y: 3}对象arr,它永远不会等于任何其他对象,因为{} !== {}.

请记住:对象与引用进行比较,但原语通过它们的进行检查。

在您的代码中,您正在检查一个对象引用与另一个引用,这是不相等的,所以这就是它记录的原因false

如果有数字数组,那么您应该使用包括

const arr = [10, 20, 30];

if(arr.includes(20)) console.log("true");
else console.log("false");

您可以使用find查找数组中的元素

const arr = new Array();
arr.push({ x: "a", y: 1 });
arr.push({ x: "b", y: 2 });
arr.push({ x: "c", y: 3 });

const elem = { x: "c", y: 3 };

if (arr.find((o) => o.x === elem.x && o.y === elem.y)) {
  console.log("true");
} else {
  console.log("false");
}


推荐阅读