【问题标题】:Unfolding array of values into distinct categories将值数组展开为不同的类别
【发布时间】:2018-05-29 17:17:30
【问题描述】:

我有一个来自共享点表的 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 图表,以创建一个分类图表,显示每个类别的值计数。

我尝试在我找到的示例中执行 for...each 并在循环和 _.map 中执行循环,但没有得到我想要的输出(在浏览器中调试很痛苦,所以不确定在哪里代码对我来说失败了:/)。您能否举个例子说明如何正确地进行这种操作(可能是 Underscore 的 .chain .each 和 .map)?最好没有箭头功能(我需要让它在 IE11 中工作)。

提前谢谢你!

【问题讨论】:

  • 请添加有效数据。对象不是用括号括起来的,而是用大括号括起来的。
  • 数据似乎不正确。我们需要准确的数据。
  • 你尝试了什么,我没有看到任何代码或尝试(例如 javascript)。

标签: javascript arrays json d3.js dimple.js


【解决方案1】:

可以通过重建新的对象集合来完成;这是一个示例;

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 名称应该使用双引号 " 而不是单引号 '

【讨论】:

    猜你喜欢
    • 2021-07-15
    • 2010-11-26
    • 1970-01-01
    • 1970-01-01
    • 2018-08-23
    • 2021-10-21
    • 1970-01-01
    • 2020-12-27
    • 2019-01-27
    相关资源
    最近更新 更多