我想比较两个Json对象数组。一个有更多的数据。对于最终结果,如果一个id找到另一个,则selected checkbox = true。到目前为止有4个,它只找到一个。我是否首先循环遍历长数组,然后循环遍历第二个数组以找到匹配?
this.formAll = JSON.parse(response)
for (var i = 0; i < this.formAll.length; i++) {
for (var j = i; j < this.formAb.length; j++) {
console.log( this.formAb[j].id, this.formAll[i].SeriesNumber);
if ( this.formAll[i].id === this.formAb[j].id) {
console.log( 'small=', this.formAb[j].id, 'large=',
this.formAll[i].id );
this.formAll[i].selected = true;
}}
}
9条答案
按热度按时间7rfyedvj1#
快速且有限
缓慢且更通用
cgvd09ve2#
在Javascript/Typescript中(如果两个对象的键顺序相同):使用
JSON.stringify(obj1) === JSON.stringify(obj2)
Object.entries(obj1).toString() === Object.entries(obj2).toString()
obj1 = { a:1, b:2 }
obj2 = { a:1, b:2 }
// true
obj1 = { a:1, b:2 }
obj2 = { b:2, a:1 }
// false
1.使用Lodash,不考虑键的顺序
_.isEqual(obj1 , obj2 ); // true
1.分别比较对象的每个键
unftdfkk3#
对于Angular ,请使用深度相等
yruzcnhs4#
您可以使用for-of和find方法来实现结果,如下所示:
6ojccjat5#
使用过滤器效果更好。
baubqpgj6#
比较两个Json对象以收集示例:目标1:
目标2:
-------------------------------------------------------compare(obj1,obj2){
它将只返回尊重:目标
ijnw1ujt7#
轻松简单!
JSON.stringify(Obj2)
工作最快:*hgtggwj08#
我认为比较“JSON.Stringify”方法不正确;下一个检查递归对象的变体:
用玩笑来测试它:
JavaScript版本:
6qftjkof9#
我的建议是逐个比较对象的字段: