在Javascript中修改对象

时间:2017-12-28 10:12:56

标签: javascript

我正在尝试转换对象

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]]

非常感谢任何帮助。

谢谢,

5 个答案:

答案 0 :(得分:2)

只需将return声明更改为

即可
return {id: k, value:result[k]}; //observe that an object is returned instead of an array

<强>演示

&#13;
&#13;
var data = {"USD": 12323,"CAD":32123};
var res = Object.keys(data).map(function(k) { 
   return {id: k, value:data[k]};
});
console.log( res );
&#13;
&#13;
&#13;

答案 1 :(得分:1)

使用ES6,您可以Object.entries使用Array#map,使用destructuring assignment获取元素,使用short hand properties获取结果。

&#13;
&#13;
var data = { "USD": 12323, "CAD": 32123 },
    result = Object.entries(data).map(([id, value]) => ({ id, value }));
    
console.log(result);
&#13;
&#13;
&#13;

答案 2 :(得分:1)

您正在创建一个数组,而不是一个对象。将[]更改为{}

&#13;
&#13;
var res = {"USD": 12323,"CAD":32123};

res = Object.keys(res).map(function(k) { 
    return {id: k, value:res[k]};
});

console.log(res);
&#13;
&#13;
&#13;

作为替代方案,您可以使用check the npm docs

&#13;
&#13;
var res = {"USD": 12323,"CAD":32123};

res = Object.keys(res).map(x => x = { id: x, value: res[x]});

console.log(res);
&#13;
&#13;
&#13;

arrow function

&#13;
&#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;
&#13;
&#13;

答案 3 :(得分:0)

您可以迭代对象的键并将其映射如下:

Object.keys(res).map(function(key) { 
    return {id: key, value: data[key]};
}

答案 4 :(得分:0)

更改return语句并返回一个对象

&#13;
&#13;
var res = {
  "USD": 12323,
  "CAD": 32123
}
var m = Object.keys(res).map(function(item) {
  return {
    id: item,
    value: res[item]
  }

})
console.log(m)
&#13;
&#13;
&#13;