Javascript将对象转换为数组
我有一个对象数组,如下所示:Javascript将对象转换为数组,javascript,arrays,Javascript,Arrays,我有一个对象数组,如下所示: var array = [ [ { name: 'a', value: 1, where: '1st array' }, { name: 'b', value: 2, where: '1st array' } ], [ { name: 'a', value: 1, wher
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
可能没有效率…这里是实现这一点的另一种方法。获取像values=Object.values(array)
这样的值,并使用simplefor loop
对这些值进行迭代
var数组=[
[
{
名称:‘a’,
价值:1,
其中:“第一阵列”
},
{
名称:‘b’,
价值:2,
其中:“第一阵列”
}
],
[
{
名称:‘a’,
价值:1,
其中:“第二阵列”
},
{
名称:‘b’,
价值:2,
其中:“第二阵列”
}
]
]
变量输出=[]
变量值=对象值(数组);
//console.log(值);
对于(var i=0;i使用simple for loop for this with method,以数组形式获取值
var-arr=[
[
{
名称:‘a’,
价值:1,
其中:“第一阵列”
},
{
名称:‘b’,
价值:2,
其中:“第一阵列”
}
],
[
{
名称:‘a’,
价值:1,
其中:“第二阵列”
},
{
名称:‘b’,
价值:2,
其中:“第二阵列”
}
]
];
var newArr=[];
为了(让我进来){
for(让j进入arr[i]){
newArr.push(对象值(arr[i][j]);
}
}
console.log(newArr);
您需要以以下方式执行此操作…如果不想使其成为静态的,您可以对其进行改进,也可以使其成为动态的。但这将是一个冗长的代码…:)
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]);
可以对内部数组使用销毁分配
var-array=[{name:'a',value:1,其中:'1st-array'},{name:'b',value:2,其中:'1st-array'}],{name:'a',value:1,其中:'2nd-array'},{name:'b',value:2,其中:'2nd-array'}],
结果=array.reduce(
(r,a)=>r.concat(a.map({name,value,where})=>([name,value,where]),
[]
);
控制台日志(结果)代码>如果执行时间很关键,您可以编写最快的解决方案和测试。我认为
的会比你想象的好。看看这里:循环1000个元素不会慢,不管你怎么做。@KIKOSoftware对于嵌套数组,我该如何做array.map()
,就像我的例子中一样?你无论如何都需要循环。除非您希望在特定索引中提取数据而不进行迭代。反正是O(N),