更改JavaScript数据对象的格式
我有如下的数据对象:更改JavaScript数据对象的格式
[{"Positive":"14.71","Neutral":"50.0","Negative":"35.29"}]
我想这个更改为下面指定的格式:
[{"type":"Positive","value":14.71},{"type":"Neutral","value":50.0},{"type":"Negative","value":35.29}]
使用Object.keys
和Array#map
方法。
var data = [{
"Positive": "14.71",
"Neutral": "50.0",
"Negative": "35.29"
}];
var res = Object.keys(data[0]) // get all object property names
// iterate over property names array
.map(function(k) {
// generate array element using property value
return {
type: k,
// cast data value to number using plus-sign prefix(as per requirement)
value: +data[0][k]
}
})
console.log(res);
谢谢兄弟... –
@GilBaggio:很高兴帮助你:) –
我解决这个使用通用pairs
函数试图map
时,这将是对您有用,reduce
,或者在JavaScript
let input = [{"Positive":"14.71","Neutral":"50.0","Negative":"35.29"}];
let pairs = o =>
Object.keys(o).reduce((acc,k) => [...acc, [k, o[k]]], []);
let output = pairs(input[0]).map(([type,value]) =>
({type, value: Number(value)}));
console.log(output);
filter
对象
或者,pairs
可以被实现为一个发电机,其将产生一个整体更可读的结果
let input = [{"Positive":"14.71","Neutral":"50.0","Negative":"35.29"}];
function* pairs(o) {
for (let k of Object.keys(o))
yield [k, o[k]];
}
let output = Array.from(pairs(input[0]), ([type, value]) => {
return {type, value: Number(value)};
});
console.log(output);
Array.from
提供了一种方便的方式来收集从迭代值的值(和任选地图),但如果你不想使用它,则不必使用它。在熟悉它之前,您可以使用for-of
循环轻松地将键/值对收集到输出对象中。
let input = [{"Positive":"14.71","Neutral":"50.0","Negative":"35.29"}];
function* pairs(o) {
for (let k of Object.keys(o))
yield [k, o[k]];
}
let output = [];
for (let [type, value] of pairs(input[0]))
output.push({type, value: Number(value)});
console.log(output);
感谢您的详细解答.. –
您可以通过分割字符串做到这一点,手动遍历它 –
你有没有尝试任何东西,你能告诉我们吗? – Xotic750
我正在尝试处理D3中的数据对象js ... –