将数组转换为对象

时间:2018-06-12 11:23:58

标签: javascript arrays sorting object

我有一个数组。我想将它们转换为一组对象。

下面的

是我的数组

[ null,
[ 5, 6 ],
[ 7, 8 ],
[ 9, 10 ],
[ 13, 14 ] ]

然后我尝试将它们成对转换成对象,但我得到的是:

{ '0': null,
'1': [ 5, 6 ],
'2': [ 7, 8 ],
'3': [ 9, 10 ],
'4': [ 13, 14 ] }

我想要达到的目标如下:

    {
        "0": 5,
        "1": 6,
    },
    {
        "0": 7,
        "1": 8,
    },
    {
        "0": 9,
        "1": 10,
    },
    {
        "0": 13,
        "1": 14,
    },

感谢那些愿意帮助的人

2 个答案:

答案 0 :(得分:2)

您可以过滤falsy值并映射已分配数组的对象。

var array = [null, [5, 6], [7, 8], [9, 10], [13, 14]],
    result = array
        .filter(Boolean)
        .map(a => Object.assign({}, a));
        
console.log(result);

包含在一个函数中

function getObjects(array) {
    return array
        .filter(Boolean)
        .map(a => Object.assign({}, a));
}

console.log(getObjects([null, [5, 6], [7, 8], [9, 10], [13, 14]]));

答案 1 :(得分:0)

您应该具有跳过数组中null值的条件:

function changeArray(arr){
  var res = [];
  arr.forEach((item)=>{
    let obj = {};
    if(item){
      item.forEach((val, index)=>{
        obj[index] = val;
      });
     res.push(obj);
    }
  });
  return res;
}

var arr1 = [ null,
[ 5, 6 ],
[ 7, 8 ],
[ 9, 10 ],
[ 13, 14 ] ];
console.log(changeArray(arr1));

var arr2 = [ null,
[ 5, 6, 7 ],
[ 7, 8, 9 ]];
console.log(changeArray(arr2));