0
votes

JQuery Combinez une matrice de tableaux dans un autre tableau de matrices

J'ai ce tableau de tableaux: xxx

... et je voudrais le transformer en ceci: xxx

i Devinez que c'est avec une "boucle", mais je ne vois pas comment le faire. Merci d'aide.


0 commentaires

3 Réponses :


0
votes

J'espère que cela vous aide, j'ai remplacé les valeurs avec une chaîne pour obtenir la solution minimale.

p>

let arr = [[1,'a'],[1,'b'],[2,'c'],[2,'d'],[3,'e'],[3,'f']];

arr.forEach(function(key, index){
  key.push(arr[index+1][1]);
  arr.splice(index+1, 1);
});

console.log(arr);


1 commentaires

Il fonctionne comme un charme ! Très belle solution, très courte et très efficace. Merci beaucoup !



0
votes

J'espère que cela aide

p>

arr = [[1,'a'],[1,'b'],[2,'c'],[2,'d'],[3,'e'],[3,'f']];


	const newArr = arr.reduce((acc, cur) => {
	const prev = acc.find(elem => elem[0] === cur[0]);

    if(prev) {
        prev[1] += ", " + cur[1];
    } 
    else {
        acc.push(cur);
    }
    return acc;
	}
	, []);

console.log(newArr);


1 commentaires

Merci pour votre réponse.



0
votes

Vous pouvez utiliser réduire code>. Dans la fonction de fonction de rappel, vérifiez si l'accumulateur a une clé. Sinon, créez la touche et ajoutez de la valeur à celle-ci

​​ p>

let arr = [
  [1, 'a'],
  [1, 'b'],
  [2, 'c'],
  [2, 'd'],
  [3, 'e'],
  [3, 'f']
];

let data = arr.reduce((acc, curr) => {

  if (!acc[curr[0]]) {
    acc[curr[0]] = [];
  }
  curr.forEach((item) => {
    if (acc[curr[0]].indexOf(item) === -1) {
      acc[curr[0]].push(item);
    }
  })
  return acc;
}, {});
console.log(Object.values(data))


1 commentaires

Merci pour votre réponse.