繁体   English   中英

如何在Javascript中将对象转换为数组

[英]How to Convert Object to Array in Javascript

我想将一个对象转换为Javascript中较小的单属性对象的数组。 例如:

x={
    a: {a1:"a1", a2:"a2"},
    b: {b1:"b1", b2:"b2"},
    c: {c1:"c1", c2:"c2"}
}

转换成

y=[
    {a: {a1:"a1", a2:"a2"}},
    {b: {b1:"b1", b2:"b2"}},
    {c: {c1:"c1", c2:"c2"}}
]

我知道使用循环是可行的,但是我想知道是否有更优雅的方法。 如果他们有帮助,我正在使用下划线/破折号。

您可以使用Array#map

 var x = { a: { a1: "a1", a2: "a2" }, b: { b1: "b1", b2: "b2" }, c: { c1: "c1", c2: "c2" } }, y = Object.keys(x).map(function (k) { var o = {}; o[k] = x[k]; return o; }); console.log(y); 

ES6 @ 内纳德·弗拉卡

 var x = { a: { a1: "a1", a2: "a2" }, b: { b1: "b1", b2: "b2" }, c: { c1: "c1", c2: "c2" } }, y = Object.keys(x).map(k => ({[k]: x[k]})); console.log(y); 

正如Barmar指出的那样,使用map确实更有意义(我保留了reduce版本以供后代使用):

let arr = Object.keys(x).map(key => { [key]: x[key] });

您可以使用reduce将其转换为数组:

Object.keys(x).reduce(function(acc, key) {
   var tmp = {};
   tmp[key] = x[key];
   acc.push(tmp);
   return acc;
}, []);

如果有ES6,您可以使其更加简洁:

Object.keys(x).reduce((acc, key) => {
   acc.push({ [key]: x[key] });
   return acc;
}, []);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM