-1
votes

Lodash. Comment obtenir une matrice d'agrégation des objets de tableau

Par exemple, j'ai un tableau: xxx

Comment obtenir des valeurs de matrice de référence comme xxx

première étape toujours = 0

deuxième étape 0 + 10 = 10

troisième étape 0 + 10 + 10 = 20

Fentiler l'étape 0 + 10 + 10 + 5 = 25


3 commentaires

Qu'est-il arrivé au troisième dix? Le premier élément est toujours considéré comme zéro?


@Asdfgerte oui c'est vrai. Toujours toujours zéro.


Pourquoi n'y a-t-il pas 30 dans le tableau de sortie? Le tableau de sortie ne devrait-il pas avoir référence.longueur + 1 éléments?


3 Réponses :


1
votes

Vous pouvez réduire la matrice et ajouter la valeur actuelle code> à la dernière somme:

p>

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 commentaires

0
votes

Vous pouvez mapper les valeurs en prenant une fermeture sur la somme et prenez zéro pour le premier élément.

p>

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);


0 commentaires

0
votes

La façon dont je ferais cela serait en utilisant le Méthode Array.Reduce comme suit:

p>

let result = [0]

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


0 commentaires