Considérons un tableau d'objets où chaque objet représente un individu avec un nom et un âge :
var array = [ { "name": "Joe", "age": 17 }, { "name": "Bob", "age": 17 }, { "name": "Carl", "age": 35 } ];
La tâche consiste à extraire des âges distincts de ce tableau, ce qui donne lieu à un nouveau tableau avec des valeurs :
[17, 35]
ES6 introduit la structure de données Set, qui maintient automatiquement une collection de valeurs uniques. Cela peut être utilisé pour extraire efficacement des âges distincts :
const distinctAges = [...new Set(array.map(object => object.age))];
Cette approche crée un nouveau tableau qui inclut uniquement les valeurs uniques présentes dans la propriété age de chaque objet du tableau d'origine.
Si les performances sont primordiales, vous pouvez envisager des structures de données alternatives, telles qu'une carte ou un objet :
const ageMap = {}; array.forEach(object => { ageMap[object.age] = true; }); const distinctAges = Object.keys(ageMap).map(Number);
Dans Dans ce scénario, les valeurs d'âge sont stockées sous forme de clés dans un objet (carte). La méthode Object.keys() récupère les clés uniques (valeurs d'âge) sous forme de tableau, qui est ensuite converti en valeurs numériques à l'aide de map(Number).
La méthode d'itération initiale présenté dans la question peut être amélioré en utilisant la méthode include() pour vérifier les valeurs en double :
var distinct = []; for (var i = 0; i < array.length; i++) { if (!distinct.includes(array[i].age)) { distinct.push(array[i].age); } }
Cette optimisation réduit le nombre de comparaisons requises en évitant plusieurs vérifications des doublons âges.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!