所以我有一个像这样的对象:
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。
答案 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支持的未来读者:
将map
与Obect.keys()
:
myArr = Object.keys(obj).map(function(key) { return {name: key, value: obj[key]} } );