【发布时间】:2020-06-07 07:50:33
【问题描述】:
我正在尝试检查对象数组是否包含对象。当数组中有一个具有相同值的对象并且对象ID无关紧要时,我希望它返回true。这就是我认为它会起作用的方式:
let arr = [{r:0, g:1}];
let obj = {r:0, g:1}
console.log(arr.includes(obj));
但它返回 false,我需要它返回 true。我是否必须使用 JSON.stringify() 将数组中的每个对象转换为字符串,而我正在搜索的对象如下:
let arr = [JSON.stringify({r: 0, g: 1})]
let obj = {r: 0, g: 1}
console.log(arr.includes(JSON.stringify(obj)));
还有其他更简单、更有效的方法来处理更多对象吗?
【问题讨论】:
-
obj和arr[0]是内容相似的不同对象。如果它们引用同一个对象,它将返回 true:console.log(arr.includes(arr[0])); -
使用
arr.some()(developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…) 并选择合适的策略来匹配对象。最简单的方法是在每个对象上都有一个唯一的标识符属性。您还可以使用对象相等性测试器功能。有许多提供此类功能的实用程序库,例如罗达什。
标签: javascript arrays node.js json