我有两个数组,我想在数组中找到匹配的值。但是这些值以不同的顺序出现。如何在纯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')
}
}
预期输出
data=[{'property1': 'john', 'property2': 12, 'property3': 'acb'},
{'property1': 'jasmin', 'property2': 22, 'property3': 'jjj'},
{'property1': 'dog', 'property2': 22, 'property3': 'xys'}]
答案 0 :(得分:2)
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);
&#13;
data1.slice().map(...)
适用于原始数组的副本,因此在循环中我们不会更改原始数据。