JS结合键与2个单独的数组

时间:2018-07-17 05:36:39

标签: javascript

我下面的代码由2个带有键对值的数组组成。我目前正在尝试实现的就是将这些数组组合成这样的东西。

[{"id" : "1" , "alphabet" : "A"}, {"id" : "2" , "alphabet" : "B"}, {"id" : "3" , "alphabet" : "C"}, ]

有没有简单的方法可以做到这一点?任何帮助将不胜感激,谢谢。

    var arr = [1,2,3,4,5,6,7,8,9]
    var array = arr.map((x) => ({ id:x }));
    console.log(array);


   var arr2 = ['A','B','C','D','E','F','G','H','I']
    var array2 = arr2.map((x) => ({ alphabet:x }));
    console.log(array2);

4 个答案:

答案 0 :(得分:5)

使用Array.map

var arr = [1,2,3,4,5,6,7,8,9]
var arr2 = ['A','B','C','D','E','F','G','H','I']

var result = arr.map((v,i) => ({id:v, alphabet:arr2[i]}));
console.log(result);

答案 1 :(得分:1)

将索引作为map()中的第二个参数传递,以便您可以使用该参数从特定索引中获取数字。请尝试以下操作:

var arr = [1,2,3,4,5,6,7,8,9]

var arr2 = ['A','B','C','D','E','F','G','H','I']
var array2 = arr2.map((x,i) => ({id:arr[i], alphabet:x }));
console.log(array2);

OR::如果数组的长度不同:

var arr = [1,2,3,4,5]

var arr2 = ['A','B','C','D','E','F','G','H','I']
var array2 = arr2.map(function(x,i){
  arr[i] = arr[i] || '';
  return {id:arr[i], alphabet:x}
});

console.log(array2);

答案 2 :(得分:0)

var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
var arr2 = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I'];
var finalResult = arr.reduce((array, val, index) => {
    arr2[index] ? array.push({
        id: val,
        alphabet: arr2[index]
    }) : null;
    return array;
}, []);


console.log(finalResult);

答案 3 :(得分:0)

使用不同长度的值数组并有可能添加更多数组的更简单的方法是使用一个对象,该对象的键用作所需新对象的属性的所需键。

它可以通过使用short hand properties来工作,然后再将属性名称作为新对象的键,并将值作为新对象的单个值的数组。

除了reduce之外,数组的所有值都组合到一个新对象中,并以相同的索引分配给该对象。如果该对象不存在,则使用新对象。

var id = [1, 2, 3, 4, 5, 6, 7, 8, 9],
    alphabet = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I'],
    result = Object
        .entries({ id, alphabet })
        .reduce((r, [k, values]) => {
            values.forEach((v, i) => Object.assign(r[i] = r[i] || {}, { [k]: v }));
            return r;
        }, []);
    
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }