我有两个数组,它们具有相同数量的元素,可以映射1:1
const array1 = [1, 3, 2]
const array2 = [U2, U1, U3]
如何从array1和array2生成一个新的数组(或映射),并具有类似的内容?
const result = [[1, U1], [2, U2], [3, U3]]
答案 0 :(得分:3)
您也可以使用Array.forEach()
。在此之前,您可以对array1
数组进行排序,然后从以array2
为前缀的U
中获取相应的值,以获取所需的输出:
const array1 = [1, 3, 2];
const array2 = ['U2', 'U1', 'U3'];
const result = [];
array1.sort(function(a,b){
return a-b;
})
array1.forEach((elem, index) => result.push([elem, array2[array2.indexOf('U'+elem)]]));
console.log(result);
如果前缀并非总是U
,则可以使用该前缀:
const array1 = [1, 3, 2];
const array2 = ['U2', 'U1', 'U3'];
const result = [];
array1.sort(function(a,b){
return a-b;
})
array1.forEach((elem) => {
var array2Val = array2.find(val => val.indexOf(elem) !== -1);
result.push([elem, array2Val]);
});
console.log(result);
答案 1 :(得分:0)
您可以按各项的数值对数组进行分组。
var array1 = [1, 3, 2],
array2 = ['U2', 'U1', 'U3'],
result = Object.values([array1, array2].reduce(
(o, a) => {
a.forEach(v => {
var k = v.toString().match(/\d+$/)[0];
(o[k] = o[k] || []).push(v);
});
return o;
},
Object.create(null)
));
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }