javascript - JQuery InArray 无法正常工作?
问题描述
需要查找数组对象是否存在于数组中。我有一个 arrayObject 和数组集合。
我的代码:
var array = [
{
id:0,
item_fields:{text: "stack", type: "2", options: null},
item_id:"540551c1-1744-4f09-920f-75350ba23cb6",
item_parent:"e50b00d5-8c3e-449e-92ba-41ff9d46babe",
sequence:-1
},
{
id:0,
item_field_type:"multiChoiceNumeric",
item_fields:{text: "overflow", type: "RangeNumeric", options: null},
item_id:"1bacc69f-d8c9-4107-af60-295f8994d249",
item_parent:"e50b00d5-8c3e-449e-92ba-41ff9d46babe",
sequence:-1
}];
var arrObj =
{
id:0,
item_field_type:"multiChoiceNumeric",
item_fields:{text: "stack", type: "2", options: null},
item_id:"540551c1",
item_parent:"e50b00d5",
sequence:-1
}
此查询返回 false:
array.some(function(element){return element == arrObj})
此查询返回 -1(如果未找到):
jQuery.inArray(arrObj,array)
为什么两个查询都返回未找到的结果?我应该怎么做才能得到正确的结果?
解决方案
在 JavaScript 中,对 Object 的变量赋值类似于 C 中的指针;该变量是对 Object 内存位置的引用,而不是 Object 及其内容本身。
var x = {};
var y = {};
x === y;
// false
您可以更新回调以检查深度相等,而不是比较对象引用的array.some()
相等性,但这会变得很麻烦。
比较您知道将是唯一的对象中的键可能会更好,例如"item_id"
:
array.some(function(element) {
return element.item_id === arrObj.item_id;
});
推荐阅读
- python - 登录帐户时Django的凭据无效
- node.js - 是否可以将 2 列引用到 Postgres 中的同一表列?
- c# - 需要帮助找出为什么任务永远不会完成
- php - 需要将自定义 id 设置为 WHMCS 中的挂钩无法使其正常工作
- typescript - 在 Typescript 中动态调用导入的方法
- html - 有时导航栏中的汉堡会消失
- arrays - 插入和大 O 符号
- tensorflow - 使用 Keras/Tensorflow 2 使用 UNET 架构时,图像重建的损失函数应该是什么?
- css - 如何在父 div 中包含边框形状?
- python - 检查距离并从列表中删除