我正在尝试转换对象
var data = {"USD": 12323,"CAD":32123}
成为
[{"id":"USD","value":12323},{"id":"CAD","value":32123}]
这是我到目前为止所尝试的
var res = Object.keys(data).map(function(k) {
return [k, result[k]];
});
并获得结果
[["USD", 12323],["CAD", 32123]]
非常感谢任何帮助。
谢谢,
答案 0 :(得分:2)
只需将return
声明更改为
return {id: k, value:result[k]}; //observe that an object is returned instead of an array
<强>演示强>
var data = {"USD": 12323,"CAD":32123};
var res = Object.keys(data).map(function(k) {
return {id: k, value:data[k]};
});
console.log( res );
&#13;
答案 1 :(得分:1)
使用ES6,您可以Object.entries
使用Array#map
,使用destructuring assignment获取元素,使用short hand properties获取结果。
var data = { "USD": 12323, "CAD": 32123 },
result = Object.entries(data).map(([id, value]) => ({ id, value }));
console.log(result);
&#13;
答案 2 :(得分:1)
您正在创建一个数组,而不是一个对象。将[]
更改为{}
:
var res = {"USD": 12323,"CAD":32123};
res = Object.keys(res).map(function(k) {
return {id: k, value:res[k]};
});
console.log(res);
&#13;
作为替代方案,您可以使用check the npm docs:
var res = {"USD": 12323,"CAD":32123};
res = Object.keys(res).map(x => x = { id: x, value: res[x]});
console.log(res);
&#13;
var res = {"USD": 12323,"CAD":32123};
var resWArrow = Object.entries(res).map(function(k) {
return {id: k[0], value: k[1]};
});
console.log('Without arrow: ' + JSON.stringify(resWArrow));
var resArrow = Object.entries(res).map(x => x = { id: x[0], value: x[1] });
console.log('With arrow: ' + JSON.stringify(resArrow));
&#13;
答案 3 :(得分:0)
您可以迭代对象的键并将其映射如下:
Object.keys(res).map(function(key) {
return {id: key, value: data[key]};
}
答案 4 :(得分:0)
更改return语句并返回一个对象
var res = {
"USD": 12323,
"CAD": 32123
}
var m = Object.keys(res).map(function(item) {
return {
id: item,
value: res[item]
}
})
console.log(m)
&#13;