将值数组展开为不同的类别

问题描述 投票:0回答:1

我有一个来自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'}]

我想要实现的目标:

  1. 创建单独的行以“展开”三个类别字段(蓝色,红色,黄色),因此一行变为三行
  2. 保留每个新创建的行中的其他字段(ID,标题)

我正在尝试重新格式化这些数据,以便我可以将数组输入到Dimple / D3图表中,以创建一个分类图表,显示每个类别的值计数。

我尝试为...做每个循环和循环内部循环和_.map从我发现的示例,但没有得到我之后的输出(在浏览器中调试是一个痛苦,所以不知道代码失败的地方我 :/ )。你是否会如此善良地展示一个如何正确操作这个操作的例子(可能是Underscore的.chain .each和.map)?最好没有箭头功能(我需要让它在IE11中工作)。

先感谢您!

javascript arrays json d3.js dimple.js
1个回答
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名称应该使用双引号"而不是单引号'

© www.soinside.com 2019 - 2024. All rights reserved.