-6
votes

Groupez un tableau par un autre tableau à l'aide de JavaScript

Disons que j'ai 2 matrice de la même longueur dans JavaScript xxx

Maintenant comment puis-je regrouper par array_1 et array_2 ensemble?

Signification Le résultat sera comme Ceci: xxx

merci


3 commentaires

Malgré votre exemple, je n'ai aucune idée de ce que vous entendez par "groupe par". On dirait que vous avez supprimé des doublons dans le premier tableau, mais je ne peux pas comprendre ce que vous avez fait avec la seconde pour obtenir ces valeurs. Pourriez-vous s'il vous plaît expliquer?


@Rolandweber dans SQL Ce sera comme suit ce groupe Select Array_1 SUM (Array_2) par Array_1


Donc, vous recherchez une personne familiarisée avec SQL et JavaScript pour comprendre et répondre à votre question.


3 Réponses :


1
votes

Si par groupe, vous voulez dire ajouter des valeurs avec les mêmes clés ensemble, vous pouvez essayer:

p>

let a = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'A', 'F', 'C', 'A', 'E'];
let b = ['5', '7', '4', '3', '8', '1', '9', '1', '5', '4', '2', '10'];

const temp = {};
a.forEach((value, index) => {
    temp.hasOwnProperty(value) ? temp[value]+=parseInt(b[index]) : temp[value]=parseInt(b[index]);
});

a = Object.keys(temp);
b = Object.values(temp);
console.log(a, b);


0 commentaires

0
votes

Vous pouvez utiliser Réduire strong> et des tableaux de groupe dans le formulaire de valeur clé.

p>

let Array1 = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'A', 'F', 'C', 'A', 'E']
let Array2 = ['5', '7', '4', '3', '8', '1', '9', '1', '5', '4', '2', '10']

let op = Array1.reduce((op,inp,index)=>{
  if(op[inp]){
    op[inp] += Number(Array2[index])
  } else {
    op[inp] = Number(Array2[index])
  }
  return op
},{})

console.log(Object.keys(op))
console.log(Object.values(op))


0 commentaires

0
votes

Vous pouvez itérer les éléments de la matrice et de l'épissure si la valeur est connue et que la valeur est connue et que la mise à jour array2 code>.

Cette proposition utilise le numéro au lieu de la chaîne, car les chiffres préfèrent à ajouter. P> Il utilise un objet pour garder une trace des indices. p>

p>

var array1 = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'A', 'F', 'C', 'A', 'E'],
    array2 = ['5', '7', '4', '3', '8', '1', '9', '1', '5', '4', '2', '10'].map(Number),
    map = array1.reduce((m, v, i) => m.set(v, (m.get(v) || 0) + array2[i]), new Map);

array1 = Array.from(map.keys());
array2 = Array.from(map.values(), String);

console.log(array1);
console.log(array2);


0 commentaires