我有一个来自sharepoint表的JSON对象(数组),我需要对行进行重组,但有点挣扎(我在JS中相当初学者)。
我有这样的事情:
[{'ID':'1', 'Title': 'First record', 'blue':'3', 'red':'6', 'yellow':'2'},
{'ID':'2', 'Title': 'Second record', 'blue':'1', 'red':'3', 'yellow':'6'}]
我需要将其转换为:
[{'ID':'1', 'Title': 'First record', 'category':'blue', 'count':'3'},
{'ID':'1', 'Title': 'First record', 'category':'red', 'count':'6'},
{'ID':'1', 'Title': 'First record', 'category':'yellow', 'count':'2'},
{'ID':'2', 'Title': 'Second record', 'category':'blue', 'count':'1'},
{'ID':'2', 'Title': 'Second record', 'category':'red', 'count':'3'},
{'ID':'2', 'Title': 'Second record', 'category':'yellow', 'count':'6'}]
我想要实现的目标:
我正在尝试重新格式化这些数据,以便我可以将数组输入到Dimple / D3图表中,以创建一个分类图表,显示每个类别的值计数。
我尝试为...做每个循环和循环内部的循环和我发现的示例中的_.map,但没有得到我之后的输出(在浏览器中调试很痛苦,所以不知道在哪里代码对我失败:/)。你是否会如此善良地展示一个如何正确操作这个操作的例子(可能是Underscore的.chain .each和.map)?最好没有箭头功能(我需要在IE11中使用)。
提前谢谢!
答案 0 :(得分:0)
可以通过重建新的对象集合来完成;这是一个示例;
var myData = JSON.parse('JsonString');
var transformedData = [];
myData.forEach(function(data){
transformedData.push({ ID: data.ID, Title: data.Title, category: "blue", count = data.blue });
transformedData.push({ ID: data.ID, Title: data.Title, category: "red", count = data.red });
transformedData.push({ ID: data.ID, Title: data.Title, category: "yellow", count = data.yellow });
});
var transformedJson = JSON.stringify(transformedData);
记住JSON名称应使用双引号"
而不是单引号'
。