gpt4 book ai didi

javascript - 如何比较对象内的值具有不同序列的数组javascript

转载 作者:行者123 更新时间:2023-12-02 14:18:14 24 4
gpt4 key购买 nike

我有两个数组,我想在数组内找到匹配的值。但这些值出现的顺序不同。如何在纯 JavaScript 中比较这些值。我想匹配 property1 和 name 的值,然后提取 property3,其中 property1 与 name 匹配

代码:

var data = []
var data1 = [
{'property1': 'john', 'property2': 12},
{'property1': 'jasmin', 'property2': 22},
{'property1': 'dog', 'property2': 22}
]
var data2 = [
{'name': 'dog', 'property2': 12, 'property3': 'xys'},
{'name': 'john', 'property2': 22, 'property3': 'acb'},
{'name': 'jasmin', 'property2': 22, 'property3': 'jjj'}
]

for(var i=0; i<data1.length; i++){
if(data1[i].property1 == data2[i].name){
data.push({
'property1': data1[i].property1,
'property2': data1[i].property2,
'property3': data2[i].property3
})
} else {
console.log('not equal')
}
}

jsfiddle

预期输出

data=[{'property1': 'john', 'property2': 12, 'property3': 'acb'}, 
{'property1': 'jasmin', 'property2': 22, 'property3': 'jjj'},
{'property1': 'dog', 'property2': 22, 'property3': 'xys'}]

最佳答案

var data = []
var data1 = [
{'property1': 'john', 'property2': 12},
{'property1': 'jasmin', 'property2': 22},
{'property1': 'dog', 'property2': 22}
];
var data2 = [
{'name': 'dog', 'property2': 12, 'property3': 'xys'},
{'name': 'john', 'property2': 22, 'property3': 'acb'},
{'name': 'jasmin', 'property2': 22, 'property3': 'jjj'}
];

data = data1.slice().map(function(el){
for (var i = 0, l = data2.length; i < l; i++) {
if (el.property1 === data2[i].name) {
el.property3 = data2[i].property3;
}
}
return el;
});

console.log(data);

data1.slice().map(...) 适用于原始数组的副本,因此在循环中我们不会更改原始数据。

关于javascript - 如何比较对象内的值具有不同序列的数组javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38872945/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com