推荐关注
› Meteor
› JSLint - a JavaScript code quality tool
› jsFiddle
› D3.js
› WebStorm
推荐书目
› JavaScript 权威指南第 5 版
› Closure: The Definitive Guide
anonymoustian

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

  •  
  •   anonymoustian · Feb 22, 2016 · 4128 views
    This topic created in 3909 days ago, the information mentioned may be changed or developed.

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

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

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

    请问应该怎么做呢?

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

    20 replies  •  2016-02-23 09:45:39 +08:00
    whahugao
    whahugao
    Feb 22, 2016❤️1
    1
    手动遍历可以么
    ```
    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
    oct16
    Feb 22, 2016❤️1
    2
    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)
    jarlyyn
    jarlyyn
    Feb 22, 2016❤️1
    4
    楼主有没有听说过 Lodash/underscore ?
    jarlyyn
    jarlyyn
    Feb 22, 2016❤️1
    5
    好吧,仔细看了下,楼主要的格式和 toparis 的有点区别

    https://lodash.com/docs#toPairs
    FrankFang128
    FrankFang128
    Feb 22, 2016❤️1
    6
    无法保证顺序
    otakustay
    otakustay
    Feb 22, 2016❤️1
    7
    Object.entries(o).map(([name, value]) => ({name, value}));
    ChefIsAwesome
    ChefIsAwesome
    Feb 22, 2016❤️1
    8
    遍历一下不就行了,不知道楼主纠结在哪
    ncwhale
    ncwhale
    Feb 22, 2016❤️1
    9
    {name:k, value: v} for k,v of map
    hanai
    hanai
    Feb 22, 2016❤️1
    10
    Object.keys(obj).map(key => {name: key, value: obj[key]})
    exoticknight
    exoticknight
    Feb 22, 2016❤️1
    11
    7 楼 es2015 正解
    mmzer
    mmzer
    Feb 22, 2016❤️1
    12
    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
    otakustay
    Feb 22, 2016❤️1
    13
    @exoticknight 还真不是 2015 的, entries 是 2016 的
    yangxiongguo
    yangxiongguo
    Feb 22, 2016❤️1
    15
    7 楼跟 10 楼都是手撸的吗,都报错了。
    klesh
    klesh
    Feb 22, 2016
    16
    lodash:
    var pairs = _.map(o, function(v, k) {
    return { name: k, value: v };
    });
    exoticknight
    exoticknight
    Feb 22, 2016
    17
    @otakustay 果然是,是我技术太渣了= =
    exoticknight
    exoticknight
    Feb 22, 2016
    18
    @yangxiongguo 基本没有浏览器支持 es6/7 ……
    dustinth
    dustinth
    Feb 22, 2016
    19
    underscore 或者 lodash 应该成为标配...自从用了就离不开了.
    magicdawn
    magicdawn
    Feb 23, 2016
    20
    lodash

    ```js
    var obj = {a: 1, b: 2, c: 3};
    _.map(obj, (v,k) => {
    return {
    name: k,
    value: v
    };
    });
    ```
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1301 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 47ms · UTC 21:20 · PVG 05:20 · LAX 13:20 · JFK 16:20
    ♥ Do have faith in what you're doing.