合并/替换Javascript数组

Merge/replace Javascript arrays

本文关键字:数组 Javascript 替换 合并      更新时间:2023-09-26

我有一个像这样的对数组(其中每对中的第一项只是一个基本索引):

a1 = [[0, 3910], [1, 4910], [2, 19401]]

然后我有第二个数字数组:

a2 = [1384559999, 1371254399, 1360799999]

我需要做的是合并a1a2,以便a2中的项替换来自a1的每个parer中的第一个对象。像这样:

final = [[1384559999, 3910], [1371254399, 4910], [1360799999, 19401]]

您可以使用Array.map执行此

a1 = [[0, 3910], [1, 4910], [2, 19401]]
a2 = [1384559999, 1371254399, 1360799999]
console.log(a2.map(function(current, index) {
    return [current, a1[index][1]]
}));

输出

[ [ 1384559999, 3910 ],
  [ 1371254399, 4910 ],
  [ 1360799999, 19401 ] ]

因为这是另一个解决方案。。。

这假设您的意思是a1[i][0]是a2中关联值的索引。

var a1 = [[0, 3910], [1, 4910], [2, 19401]];
var a2 = [1384559999, 1371254399, 1360799999];
var a3 = [];
for(var i = 0; i < a1.length; i++) {
    tmp = [a2[a1[i][0]], a1[i][1]]
    a3.push(tmp);
}
console.log(a3);
// [ [ 1384559999, 3910 ],
//   [ 1371254399, 4910 ],
//   [ 1360799999, 19401 ] ]

如果您更改索引的值,这仍然有效,例如。。。

var a1 = [[2, 3910], [1, 4910], [0, 19401]];
// Should be... 
// [ [ 1360799999, 3910 ],
// [ 1371254399, 4910 ],
// [ 1384559999, 19401 ] ]

如果假设a1中每对中的第一个值是a2中值的索引,那么.map会是什么样子。

var a1 = [[0, 3910], [1, 4910], [2, 19401]];
var a2 = [1384559999, 1371254399, 1360799999];
console.log(a1.map(function(current, index){
    return [ a2[current[0]], current[1] ];
}));
//[ [ 1384559999, 3910 ],
//  [ 1371254399, 4910 ],
//  [ 1360799999, 19401 ] ]