2016-08-10 23 views
0

我有两个数组,我想在数组内找到匹配值。但是这些值以不同的顺序出现。我如何在普通的JavaScript中比较这些值。我想匹配propert1和名称的值,然后在那里property1匹配名称如何比较对象中的值具有不同序列的数组javascript

代码提取property3:

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'}] 
+1

没有什么像_JSON array_或_JSON object_。这只是普通的旧对象数组 – Andreas

+2

你期望得到什么结果(数组或真/假)? – Maxx

+0

整个对象必须相同?或者你想要一个属性匹配? – tpsilva

回答

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);

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

相关问题