如何在Angular 4中将对象转换为数组?

9

我想将我的Object转换为数组,这是我的对象:

{5.0: 10, 28.0: 14, 3.0: 6}

我希望得到以下形式的数组。
[{"type": 5.0,"value":10},{"type": 28.0,"value":14}, {"type": 3.0,"value":6}]

或者

[{"5.0": 10},{"28.0": 14}, {"3.0": 6}]
2个回答

25
通过使用Object.keys获取键,然后使用map函数获得所需的输出结果。

const obj = {5.0: 10, 28.0: 14, 3.0: 6};

const mapped = Object.keys(obj).map(key => ({type: key, value: obj[key]}));

console.log(mapped);
另一个解决方案可以通过使用Object.entries数组解构来提供。

const obj = {5.0: 10, 28.0: 14, 3.0: 6};

const mapped = Object.entries(obj).map(([type, value]) => ({type, value}));

console.log(mapped);


在你的第二种方法中,当返回值为“自动创建键值对”时,也涉及到解构吗? - guijob
解构部分仅在参数中进行 - ([type, value])。我在参数中获取一个数组,并将它们解构为单个参数,而不是使用param[0]param[1] - Suren Srapyan
这段代码 ({type, value}) 怎么样?你只提供了值,返回的数组也有键。 - guijob
是的,当你只传递属性时,它会创建一个同名的键。在这种情况下,我有一个具有两个属性(type和value)的对象。这个 {type,value} 等同于 {type: type, value: value} - Suren Srapyan

11

使用 Object.keys 和 array.map:

var obj = {5.0: 10, 28.0: 14, 3.0: 6}

var arr = Object.keys(obj).map(key => ({type: key, value: obj[key]}));

console.log(arr);

如果您的浏览器支持 Object.entries,您就可以使用它:

var obj = {5.0: 10, 28.0: 14, 3.0: 6}

var arr = Object.entries(obj).map(([type, value]) => ({type, value}));

console.log(arr);


相同的答案,请勿重复回答。 - Avanish Kumar
@AvanishKumar 我没有意图复制别人的答案,我是在他回答的时候回答的。 - Faly

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接