Перебор JSON и объединение

Есть данные в которых одна запись может иметь продолжение в следующей записи, пример:

[
  {
    "KASS": "40",
    "DAT": "23-07-2010",
    "MESS": "1Являясь всего лишь частью общей картины, диаграммы связей объявлены нарушающими"
  },
  {
    "KASS": "40",
    "DAT": "23-07-2010",
    "MESS": "общечеловеческие нормы этики и морали."
  },
  {
    "KASS": "40",
    "DAT": "23-07-2010",
    "MESS": "2.Учитывая ключевые сценарии поведения, высокотехнологичная концепция"
  },
  {
    "KASS": "40",
    "DAT": "23-07-2010",
    "MESS": "3.Как принято считать, активно развивающиеся страны третьего мира, инициированные исключительно синтетически,"
  },
  {
    "KASS": "40",
    "DAT": "23-07-2010",
    "MESS": "объединены в целые кластеры себе подобных."
  },
  {
    "KASS": "41",
    "DAT": "23-07-2011",
    "MESS": "1.Сложно сказать, почему ключевые особенности структуры проекта объективно рассмотрены"
  }
]

Как такие записи можно перебрать и объединить в новый файл на node.js?


Ответы (1 шт):

Автор решения: Eugene Kuznetsov

Если идентификатором того, что запись есть часть одной сущности является "KASS" в данном случае, то можно объединить следующим образом:

const arrayOfSubjects = [{
    "KASS": "40",
    "DAT": "23-07-2010",
    "MESS": "1Являясь всего лишь частью общей картины, диаграммы связей объявлены нарушающими"
  },
  {
    "KASS": "40",
    "DAT": "23-07-2010",
    "MESS": "общечеловеческие нормы этики и морали."
  },
  {
    "KASS": "40",
    "DAT": "23-07-2010",
    "MESS": "2.Учитывая ключевые сценарии поведения, высокотехнологичная концепция"
  },
  {
    "KASS": "40",
    "DAT": "23-07-2010",
    "MESS": "3.Как принято считать, активно развивающиеся страны третьего мира, инициированные исключительно синтетически,"
  },
  {
    "KASS": "40",
    "DAT": "23-07-2010",
    "MESS": "объединены в целые кластеры себе подобных."
  },
  {
    "KASS": "41",
    "DAT": "23-07-2011",
    "MESS": "1.Сложно сказать, почему ключевые особенности структуры проекта объективно рассмотрены"
  }
];
let identificator = null;
let indexOfResultArr = 0;
const finalArr = [];
for (let subject of arrayOfSubjects) {
  const {
    KASS,
    DAT,
    MESS
  } = subject;

  if (KASS !== identificator) {
    finalArr.push(subject);
    identificator = KASS;
    indexOfResultArr += 1;
  } else {
    finalArr[indexOfResultArr - 1].MESS = finalArr[indexOfResultArr - 1].MESS.concat(MESS);
  }
}
console.log(finalArr);

→ Ссылка