javascript - 在对象数组中搜索元素
问题描述
有人可以指导我如何在数组中找到一个元素吗?
对于存在的元素,我总是认为是错误的。
谢谢你。
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');
}
解决方案
您正在寻找{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");
}
推荐阅读
- consul - 如何将 Kong 与 DNS_RESOLVER 一起使用?
- java - Java - Comparator 类的比较方法的定义
- r - 如何在数据更新的某些行上扩展可反应性?
- pm2 - 设置新环境变量时遇到问题
- python - 无法在 AWS MSK 中更新 kafka 集群版本
- android - 可以使用用户电话号码作为 Crashlytics 用户 ID 吗?
- google-sheets - 如何获取名称为唯一唯一值的值?
- ram - STM32H723 - 内存映射模式下的串行 RAM 问题
- javascript - 在 Vue 3 和 Laravel 的“vue”中找不到导出“默认”(导入为“Vue”)
- javascript - 我在向数组添加函数时遇到问题。(JavaScript)