将对象转换为对象数组,每个对象包含一个原始对象的属性和值

时间:2015-07-27 17:49:38

标签: javascript arrays object

所以我有一个像这样的对象:

var obj = { foo: function() { ... }, bar: function() { ... }, baz: 10 };

我想使用vanilla ECMAScript 3 Javascript:

将其转换为此
[ 
    { name: "foo", value: function() { ... } }, 
    { name: "bar", value: function() { ... } }, 
    { name: "baz", value: 10 }
]

我该怎么做?

注意:它必须适用于IE8。

2 个答案:

答案 0 :(得分:3)

一个简单的for..in循环可以解决这个问题,自 ECMAScript 1 以来它一直存在。

function o2a(o) {
    var arr = [],
        k;
    for (k in o) {
        arr.push({'name': k, 'value': o[k]});
    }
    return arr;
}

// Now can do

var obj = { foo: function() { /* ... */ }, bar: function() { /* ... */ }, baz: 10 };
o2a(obj);
// [
//    {name:"foo", value: function.. },
//    {name:"bar", value: function.. },
//    {name:"baz", value: 10}
// ]

答案 1 :(得分:1)

对于不需要IE 8支持的未来读者:

mapObect.keys()

一起使用
myArr = Object.keys(obj).map(function(key) { return {name: key, value: obj[key]} } );
相关问题