Lodash. Как получить агрегатный массив из объектов массива - PullRequest
0 голосов
/ 06 ноября 2019

Например, у меня есть массив:

const reference = [{id: 1, value: 10}, {id: 2, value: 10}, {id: 3, value: 10}, {id: 4, value: 5}];

Как получить значения массива из ссылка как

const result = [0, 10, 20, 25];

Первый шаг всегда = 0

Второй шаг 0 + 10 = 10

Третий шаг 0 + 10 + 10 = 20

Четвертый шаг 0 + 10 + 10 + 5 = 25

Ответы [ 3 ]

1 голос
/ 06 ноября 2019

Вы можете уменьшить массив и добавить текущую value к последней сумме:

const reference = [{id: 1, value: 10}, {id: 2, value: 10}, {id: 3, value: 10}, {id: 4, value: 5}];

const result = reference
  .reduce((r, o, i) => {
    r.push(i === 0 ? 0 : r[r.length - 1] + o.value);
    
    return r;
  }, [])
  
console.log(result);
0 голосов
/ 06 ноября 2019

Я бы сделал это, используя метод Array.reduce следующим образом:

let result = [0]

reference.reduce((acc, cur) => {
    result.push(Object.values(cur)[1]+result[result.length-1])
})

Надеюсь, это поможет

0 голосов
/ 06 ноября 2019

Вы можете отобразить значения, взяв закрытие по сумме и взяв ноль для первого элемента.

const
    reference = [{ id: 1, value: 10 }, { id: 2, value: 10 }, { id: 3, value: 10 }, { id: 4, value: 5 }],
    result = reference.map((sum => ({ value }, i) => sum += i && value)(0));

console.log(result);
...