2016-04-21 72 views
-1

压扁×2个阵列使用if statment 我有数组1和数组2 我想ARRAY3JavaScript数组与扁平化,如果statment

<script> 
    var array1 = [[5,10],[6,10],[7,10],[8,10],[9,10]]; 
    var array2 = [[1,10],[2,10],[3,10],[4,10],[5,40],[6,40]]; 

    // only the second number will add if they are different 
    // [5,10] + [5,40] 
    // [6,10] + [6,40] 

    // array3 = [[1,10],[2,10],[3,10],[4,10],[5,50],[6,50],[7,10],[8,10],[9,10]]; 

</script> 
+1

步骤1:使用一个更好的结构(例如,地图)。第2步:现在是微不足道的 –

+0

[JavaScript数组差异]的可能重复(http://stackoverflow.com/questions/1187518/javascript-array-difference) –

+1

努力的成果在哪里?你甚至试图自己解决这个问题吗? – Brett

回答

0

这是一个循环,一个临时对象与Array#forEach()的建议。

var array1 = [[5, 10], [6, 10], [7, 10], [8, 10], [9, 10]], 
 
    array2 = [[1, 10], [2, 10], [3, 10], [4, 10], [5, 40], [6, 40]], 
 
    array3 = []; 
 

 
array2.concat(array1).forEach(function (a) { 
 
    if (!this[a[0]]) { 
 
     this[a[0]] = [a[0], a[1]]; 
 
     array3.push(this[a[0]]); 
 
     return; 
 
    } 
 
    if (this[a[0]][1] !== a[1]) { 
 
     this[a[0]][1] += a[1]; 
 
    } 
 
}, Object.create(null)); 
 

 

 
document.write('<pre>' + JSON.stringify(array3, 0, 4) + '</pre>');

for

var array1 = [[5, 10], [6, 10], [7, 10], [8, 10], [9, 10]], 
 
    array2 = [[1, 10], [2, 10], [3, 10], [4, 10], [5, 40], [6, 40]], 
 
    array3 = [], 
 
    i, 
 
    temp = Object.create(null), 
 
    array = array2.concat(array1); 
 

 
for (i = 0; i < array.length; i++) { 
 
    if (!temp[array[i][0]]) { 
 
     temp[array[i][0]] = [array[i][0], array[i][1]]; 
 
     array3.push(temp[array[i][0]]); 
 
     continue; 
 
    } 
 
    if (temp[array[i][0]][1] !== array[i][1]) { 
 
     temp[array[i][0]][1] += array[i][1]; 
 
    } 
 
} 
 

 
document.write('<pre>' + JSON.stringify(array3, 0, 4) + '</pre>');

+0

我该如何处理香草js –

+0

@MohammadGheydari,请参阅编辑。 –