victorzadorozhnyy
@victorzadorozhnyy

Как сделать такой луп для сортировки JSON?

Такая задача.
Есть JSON
[{"date":"2015 August","value":"40"},
{"date":"2016 August","value":"473"},
{"date":"2016 July","value":"106"},
{"date":"2016 June","value":"55"},
{"date":"2016 November","value":"3"},
{"date":"2016 October","value":"2"},
{"date":"2016 September","value":"287"},
{"date":"2016 August","value":"3"},
{"date":"2016 July","value":"4"},
{"date":"2016 September","value":"5"}]

Нужно объекты в которых значение data совпадают соединить в один (data остается, а value сложить)
Отсортировать то возрастанию значения data и сделать вида new Date
[
            { date: new Date('2016 August'), value: 24 },
            { date: new Date('2016 September'), value: 44 },
            { date: new Date('2016 November'), value: 27 },
            ...
]

Помогите разобраться.
  • Вопрос задан
  • 208 просмотров
Решения вопроса 1
// редьюсим по полю даты
var result = array.reduce(function(result, item) {
    if (!result.hasOwnProperty(item.date) ) {
          result[item.date] = 0;
    }
    result[item.date] += parseInt(item.value, 10);
    return result;
}, {});

console.log(result);
// преобразование в массив
var resultArray = [];
Object.keys(result).forEach(function(key) {
	resultArray.push({
    date: key,
    value: result[key],
  })
});
console.log(resultArray);

https://jsfiddle.net/45ryehks/
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
01 мая 2024, в 10:55
2500 руб./за проект
01 мая 2024, в 10:55
3000 руб./за проект
01 мая 2024, в 10:55
3000 руб./за проект