0
votes

J'ai besoin de calculer la somme des colonnes dans un tableau avec des objets

J'ai une matrice bidimensionnelle, les cellules sont un objet {ID, montant}, vous devez ajouter une somme de colonnes, tout en utilisant uniquement des méthodes. Ce que j'ai fait - xxx


3 commentaires

S'il vous plaît ajouter la sortie attendue.


Yup, c'est en fait assez peu clair! Je pense que tout le monde n'a pas compris la même chose.


Valeur de sortie: ["[Objet objet] 4477100", "[Objet d'objet] 5588111", "[Objet Objet] 6699112"] Mais besoin de: [232, 276, 310]


4 Réponses :


-1
votes
const summ = matrix.reduce((acc, table) => {
        return (
            acc +
            table.reduce((acc, { amount }) => {
                return acc + amount;
            }, 0)
        );
    }, 0);

1 commentaires

J'ai besoin d'un tableau de chaque montant de la colonne, exemple [232, 276, 310]



2
votes

Pourquoi n'utiliser pas platmap code> puis Réduire code>?

p>

const matrix = [
        [{id:1, amount:11},{id:2, amount:22},{id:3, amount:33}],
        [{id:4, amount:44},{id:5, amount:55},{id:6, amount:66}],
        [{id:7, amount:77},{id:8, amount:88},{id:9, amount:99}],
        [{id:10, amount:100},{id:11, amount:111},{id:12, amount:112}],
    ];
    
let result = matrix
             .flatMap(it => it) //This flattens the items.
             .reduce((acc, item, i) => (acc[i%matrix[0].length] += item.amount, acc), //This computes the sum based on the indices and the matrix width.
             Array.apply(0, Array(matrix[0].length)).map(_ => 0)); //This inits the result array with zeros.

console.log(result)


2 commentaires

J'ai besoin d'un tableau de chaque montant de la colonne, exemple [232, 276, 310]


@ Женяборісевіч autre morceau de code;) Vous me dites si vous l'aimez!



0
votes

Vous pouvez créer un tableau de longueur égal à la largeur de la matrice. Ensuite, utilisez foreach code> pour ajouter les valeurs à l'élément correspondant.

p>

let matrix = [
        [{id:1, amount:11},{id:2, amount:22},{id:3, amount:33}],
        [{id:4, amount:44},{id:5, amount:55},{id:6, amount:66}],
        [{id:7, amount:77},{id:8, amount:88},{id:9, amount:99}],
        [{id:10, amount:100},{id:11, amount:111},{id:12, amount:112}],
    ];

let res = Array(matrix[0].length).fill(0)
matrix.forEach(x => {
  x.forEach((y,i) => {
    res[i] += y.amount;
  })
})

console.log(res)


1 commentaires

possible sans utiliser, foreach



0
votes

Alors décidé, s'il y a de meilleures solutions, je serai heureux de voir xxx


0 commentaires