更改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}] 
+0

您可以通过分割字符串做到这一点,手动遍历它 –

+0

你有没有尝试任何东西,你能告诉我们吗? – Xotic750

+0

我正在尝试处理D3中的数据对象js ... –

使用Object.keysArray#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);

+2

谢谢兄弟... –

+1

@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);

+0

感谢您的详细解答.. –