Javascript将对象转换为数组

时间:2017-12-08 09:03:15

标签: javascript arrays

我有一个像这样的对象数组:

var array = [
  [
    {
        name: 'a',
        value: 1,
        where: '1st array'
    },
    {
        name: 'b',
        value: 2,
        where: '1st array'
    }
  ],
  [
    {
        name: 'a',
        value: 1,
        where: '2nd array'
    },
    {
        name: 'b',
        value: 2,
        where: '2nd array'
    }
  ]
]

我想把它转换成这个:

[
  ['a', 1, '1st array'],
  ['b', 2, '1st array'],
  ['a', 1, '2nd array'],
  ['b', 2, '2nd array']
]

可以使用array.map()方法完成吗?我问,因为可能有超过1000个对象/数组需要转换,我认为for内的for可能效率不高......

4 个答案:

答案 0 :(得分:2)

使用简单的for循环使用Object.values方法,将值作为数组



var arr = [
  [
    {
        name: 'a',
        value: 1,
        where: '1st array'
    },
    {
        name: 'b',
        value: 2,
        where: '1st array'
    }
  ],
  [
    {
        name: 'a',
        value: 1,
        where: '2nd array'
    },
    {
        name: 'b',
        value: 2,
        where: '2nd array'
    }
  ]
];
var newArr = [];
for(let i in arr){
  for(let j in arr[i]){
    newArr.push(Object.values(arr[i][j]));
  }
}
console.log(newArr);




答案 1 :(得分:1)

您可以为内部数组使用销毁分配。

{{ URL::asset('assets/') }}

答案 2 :(得分:0)

这是另一种实现这一目标的方法。获取values=Object.values(array)之类的值,并使用简单的for loop迭代这些值。

var array = [
  [
    {
        name: 'a',
        value: 1,
        where: '1st array'
    },
    {
        name: 'b',
        value: 2,
        where: '1st array'
    }
  ],
  [
    {
        name: 'a',
        value: 1,
        where: '2nd array'
    },
    {
        name: 'b',
        value: 2,
        where: '2nd array'
    }
  ]
]
var outPut =[]
var values=Object.values(array);
//console.log(values);
for(var i=0;i<values.length;i++){
 for(var j=0;j<values[i].length;j++){
   //console.log(values[i][j]);
   outPut.push(Object.values(values[i][j]));
  
 }
}
console.log(outPut);

答案 3 :(得分:0)

你需要按照以下方式做到这一点......你可以改进它如果你不想让它变得静止,你可以让它变得动态。但它将是冗长的代码... :)     var object1,object2;

array[0].forEach(function(element,index){
   obejct1[index] = Object.values(element);      

});

array[1].forEach(function(element,index){
   obejct2[index] = Object.values(element);      

});

object1[0].concat(object1[1],object2[0],object1[1]);