Развертывание массива значений в отдельные категории - PullRequest
0 голосов
/ 29 мая 2018

У меня есть объект JSON (массив) из таблицы sharepoint, и мне нужно реструктурировать строки, но у меня возникли некоторые трудности (я довольно новичок в 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, заголовок)

I'mпытаясь переформатировать эти данные, чтобы я мог передать массив в диаграмму Dimple / D3 для создания категоризованной диаграммы, показывающей значения для каждой категории.

Я пытался делать для ... каждого и делать циклы внутри циклов и_.map из примеров, которые я нашел, но не получаю вывод, который мне нужен (отладка в браузере - это боль, поэтому я не уверен, где код терпит неудачу для меня: /).Не могли бы вы показать пример того, как правильно выполнять эту манипуляцию (вероятно, Underscore .chain .each и .map)?Желательно без функций стрелок (мне нужно, чтобы он работал в IE11).

Заранее спасибо!

1 Ответ

0 голосов
/ 04 сентября 2018

Это можно сделать, перестроив новую коллекцию объектов;вот пример;

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 должны использовать двойные кавычки ", а не одинарные кавычки '.

...