JavaScript 对象,属性变成对象数组 求解。

2016 年 2 月 22 日
 anonymoustian

现在有一个对象名为 map 有属性 a, b, c
表示为:
Object {a: 1, b: 2, c: 3}

现在想把这个对象变为对象数组,形式如下:

[{name : 'a', value : 1}, {name : 'b', value : 2}, {name : 'c', value : 3}]

请问应该怎么做呢?

另外能不能麻烦各位推荐一下 JavaScript 的优秀的入门 /参考书籍?谢谢了

3736 次点击
所在节点    JavaScript
20 条回复
whahugao
2016 年 2 月 22 日
手动遍历可以么
```
var o = {a:1,b:2,c:3};
var no = [];
for(var k in o)
{
no.push({name:k,value:o[k]});
}
console.log(no);
```
oct16
2016 年 2 月 22 日
var arr = [];
var obj = {a:1,b:2,c:3};
var temp;
for(var key in obj){
temp = {};
temp.name = key;
temp.value = obj[key];
arr.push(temp);
}
console.log(arr)
hienchu
2016 年 2 月 22 日
jarlyyn
2016 年 2 月 22 日
楼主有没有听说过 Lodash/underscore ?
jarlyyn
2016 年 2 月 22 日
好吧,仔细看了下,楼主要的格式和 toparis 的有点区别

https://lodash.com/docs#toPairs
FrankFang128
2016 年 2 月 22 日
无法保证顺序
otakustay
2016 年 2 月 22 日
Object.entries(o).map(([name, value]) => ({name, value}));
ChefIsAwesome
2016 年 2 月 22 日
遍历一下不就行了,不知道楼主纠结在哪
ncwhale
2016 年 2 月 22 日
{name:k, value: v} for k,v of map
hanai
2016 年 2 月 22 日
Object.keys(obj).map(key => {name: key, value: obj[key]})
exoticknight
2016 年 2 月 22 日
7 楼 es2015 正解
mmzer
2016 年 2 月 22 日
var arr=[],i = 0;
var obj = {a:1,b:2,c:3}
for(var k in obj){
if(obj[k]){
arr[i++] = function(){
return {
name:k,
value:obj[k]
}
} ();
}
}
console.log(arr);
otakustay
2016 年 2 月 22 日
@exoticknight 还真不是 2015 的, entries 是 2016 的
sinalvee
2016 年 2 月 22 日
yangxiongguo
2016 年 2 月 22 日
7 楼跟 10 楼都是手撸的吗,都报错了。
klesh
2016 年 2 月 22 日
lodash:
var pairs = _.map(o, function(v, k) {
return { name: k, value: v };
});
exoticknight
2016 年 2 月 22 日
@otakustay 果然是,是我技术太渣了= =
exoticknight
2016 年 2 月 22 日
@yangxiongguo 基本没有浏览器支持 es6/7 ……
dustinth
2016 年 2 月 22 日
underscore 或者 lodash 应该成为标配...自从用了就离不开了.
magicdawn
2016 年 2 月 23 日
lodash

```js
var obj = {a: 1, b: 2, c: 3};
_.map(obj, (v,k) => {
return {
name: k,
value: v
};
});
```

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://study.congcong.us/t/258130

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX