我有一个特定结构的JSON文件(参见示例A),但我需要它的结构类似于示例B.
是否可以重新组织JS中的数据?如果是这样,你怎么做?
样品A:
var myData = [
{
"date": "01/01/2017",
"here-value": "20",
"here-color": "pink",
"there-value": "24",
"there-color": "red",
},
{
"date": "02/01/2017",
"here-value": "80",
"here-color": "blue",
"there-value": "54",
"there-color": "red",
},
]
样本B:
var myData = [
{
"date": "01/01/2017",
"here-value": "20",
"here-color": "pink"
},
{
"date": "01/01/2017",
"there-value": "24",
"there-color": "red"
},
{
"date": "02/01/2017",
"here-value": "80",
"here-color": "blue"
},
{
"date": "02/01/2017",
"there-value": "54",
"there-color": "red"
}
]
我寻求重组数据的原因是创建将使用D3提供给可视化对象的对象。 结果类似于:http://jsfiddle.net/vw88/nzwLg96a/
答案 0 :(得分:4)
我以为我会使用Array.reduce()
来包含这种方法let restructuredData = myData.reduce((a, b) => {
return a.concat([
{ "date": b["date"], "here-value": b["here-value"], "here-color": b["here-color"] },
{ "date": b["date"], "there-value": b["there-value"], "there-color": b["there-color"] }
]);
}, []);
答案 1 :(得分:1)
这应该可以解决问题:
var sampleA = [
{
"date": "01/01/2017",
"here-value": "20",
"here-color": "pink",
"there-value": "24",
"there-color": "red",
},
{
"date": "02/01/2017",
"here-value": "80",
"here-color": "blue",
"there-value": "54",
"there-color": "red",
},
]
var sampleB = [];
sampleA.forEach( i => {
let a = {};
a.date = i.date;
a['here-value'] = i['here-value'];
a['here-color'] = i['here-color'];
let b = {};
b.date = i.date;
b['there-value'] = i['there-value'];
b['there-color'] = i['there-color'];
sampleB.push(a, b);
});
console.log(sampleB);
答案 2 :(得分:1)
这也有效,
var myData = [
{
"date": "01/01/2017",
"here-value": "20",
"here-color": "pink",
"there-value": "24",
"there-color": "red",
},
{
"date": "02/01/2017",
"here-value": "80",
"here-color": "blue",
"there-value": "54",
"there-color": "red",
},
] ;
var newAr = [];
myData.forEach(function(val, key){
newAr.push({"date": val.date, "here-value": val["here-value"],
"here-color": val["here-color"]});
newAr.push({"date": val.date, "there-value": val["there-value"],
"there-color": val["there-color"]});
})
console.log("newAr:", newAr);
答案 3 :(得分:1)
var myData = [{
"date": "01/01/2017",
"here-value": "20",
"here-color": "pink",
"there-value": "24",
"there-color": "red",
},
{
"date": "02/01/2017",
"here-value": "80",
"here-color": "blue",
"there-value": "54",
"there-color": "red",
},
]
var newData = []
myData.forEach(b => {
newData.push({
date: b.date,
"here-value": b["here-value"],
"here-color": b["here-color"],
}, {
date: b.date,
"there-value": b["there-value"],
"there-color": b["there-color"],
})
});
console.log(newData);