J'ai un tableau de tableaux contenant des valeurs, il ressemble à ceci

var values = [[23,45,12,67],[26,35,65,23],[45,73,12,54],[32,45,65,86]];

Je veux ajouter tous les tableaux présents dans la variable values tels que

sum = [126,198,154,230]

126 = 23 + 26 + 45 + 32

198 = 45 + 35 + 73 + 45

J'ai essayé ceci en utilisant Array.prototype.map() mais peut-être que je n'obtiens pas la logique parfaite pour le faire, donc j'avais besoin d'aide ici. Comment ajouter les valeurs de n tableaux.

1
Yash Jain 23 mai 2018 à 14:03

5 réponses

Meilleure réponse

À droite, vous pouvez mapper la somme des valeurs uniques, mais vous devez également réduire les tableaux.

var values = [[23, 45, 12, 67], [26, 35, 65, 23], [45, 73, 12, 54], [32, 45, 65, 86]],
    result = values.reduce((a, b) => a.map((v, i) => v + b[i]));
    
console.log(result);
4
Nina Scholz 23 mai 2018 à 11:06

Vous pouvez utiliser Array.prototype.map () combiné avec Array.prototype. réduire ()

Exemple de code:

const values = [[23, 45, 12, 67], [26, 35, 65, 23], [45, 73, 12, 54], [32, 45, 65, 86]];
const result = values.map((v, index, array) => v.reduce((a, c, i) => a + array[i][index], 0));
    
console.log(result);
0
Yosvel Quintero Arguelles 23 mai 2018 à 11:43

Vous pouvez utiliser array#reduce avec array#forEach. Itérer sur votre tableau, pour chaque tableau à l'intérieur du tableau, additionnez sa valeur dans un nouveau tableau et ajoutez les autres tableaux au résultat en fonction de l'index.

var values = [[23,45,12,67],[26,35,65,23],[45,73,12,54],[32,45,65,86]],
    result = values.reduce((r,a) => {
      a.forEach((v,i) => r[i] = (r[i] || 0) + v);
      return r;
    }); 
console.log(result);
0
Hassan Imam 23 mai 2018 à 11:06

Ma solution est:

const values = [[23,45,12,67],[26,35,65,23],[45,73,12,54],[32,45,65,86]];

const res = values.reduce((curr, next) => {

  let length = curr.length;
  for(let i = 0; i < length; i++) {
    curr[i] += next[i]
  }
  return curr;
});

console.log(res);
0
Kasabucki Alexandr 23 mai 2018 à 11:14

Votre code quelque chose comme ça,

var sum;
var values = [[23,45,12,67],[26,35,65,23],[45,73,12,54],[32,45,65,86]];
values.forEach(myFunction);

function myFunction(item, index) {
     item..forEach(ArraySum)
}

function ArraySum(item, index) {
     sum=sum+item;
}
0
Abhishek Pandey 23 mai 2018 à 11:14