-2
votes

Comment créer des tables avec des éléments groupés en utilisant ES6

Comment créer des tables avec des éléments groupés à l'aide de ES6

J'ai des objets dans le tableau: p> xxx pré>

Si Keyone a la même clé et la même valeur que je vais créer un nouveau tableau : Sortie: p>

En d'autres termes, je souhaite obtenir des groupements d'objets en fonction des valeurs d'une clé particulière. P>

  [ [ { keyOne: 1 }] 
  , [ { keyOne: 2, keyTwo :  3 }, { keyOne: 2, keyThree: 2 }] 
  , [ { keyOne: 4, keyFour: 32 }] 
  ] 


2 commentaires

Donc, fondamentalement, vous devez regrouper des éléments par la touche KeyONe et mettre des éléments groupés dans la sous-réseau. Est-ce exact?


Oui c'est vrai :)


3 Réponses :


1
votes

Ma compréhension est que vous voulez juste un tableau de tableaux d'objets où tous les objets d'un tableau sont regroupés par un nom de clé.

Ainsi, en tant que solution à votre problème, j'ai fait une fonction qui prendra une fonction la matrice et le nom de clé comme paramètres et renvoient les groupements. p>

p>

const givenArr = [{KeyOne: 1,KeyTwo:2},{KeyOne:2, KeyTwo:3}, {KeyOne:2,KeyTwo: 2, KeyThree:2}, {KeyOne: 4,KeyTwo: 3, KeyFour:32}]



const getGroupingsByKey = (arr,key) => {

	let valueToArrayMap = {};
	arr.forEach(obj => {
		if(!valueToArrayMap[obj[key]]){
			valueToArrayMap[obj[key]] = [];
		}
		valueToArrayMap[obj[key]].push(obj);
	})
	return Object.keys(valueToArrayMap).reduce((targetArr,currentKey) => {
		targetArr.push(valueToArrayMap[currentKey]);
		return targetArr;
	},[]);
}

console.log("Group by KeyOne\n",getGroupingsByKey(givenArr,"KeyOne"));
console.log("Group by KeyTwo\n",getGroupingsByKey(givenArr,"KeyTwo"));


0 commentaires

1
votes

Vous êtes censé montrer à certains de vos essais ... et faites attention à vos noms de variables, JavaScript est sensible à la casse ([{Strong> K Strong> Eyone: 1}, { K fort> Eyone: 2,)

p>

.as-console-wrapper { max-height: 100% !important; top: 0; background-color: turquoise; }


0 commentaires

0
votes

J'ai trouvé une solution plus rapide xxx


0 commentaires