De retour de tous les éléments d'un tableau d'objets?
J'ai un tableau qui se compose d'objets avec deux propriétés.
Une propriété "valeur" est un nombre compris entre 1 et 6.
L'autre propriété "id" est un nombre entre 1 et 200.
Comment puis-je retourner à la "id" est la propriété de tous les objets avec "valeur" = 1 et de les écrire dans un nouveau tableau?
- Salut, je me demandais où vous avez obtenu coincé? Savez-vous comment faire une boucle sur un tableau? Savez-vous comment obtenir une propriété d'un objet? Savez-vous comment utiliser un
if
déclaration de comparer des valeurs, et de faire des choses différentes en fonction de ça? Savez-vous comment créer un nouveau tableau, et ajouter des choses? - Eh bien, j'étais juste à la recherche d'une idée qui a le moins de code. Je veux garder mon "grand/original" tableau dans le code et je cherchais un moyen d'accéder à la propriété id facilement.
- Non, je ne veux pas demander à pourquoi vous faisiez cela. Bien sûr, il pourrait être une bonne idée d'extraire un tableau d'Identifiants et de le garder. J'ai demandé, où avez-vous coincé de trouver comment le faire. J'étais juste curieux, parce qu'il s'agit absolument de base, fondamental, rudimentaire, fondateur JS constructions, à savoir la boucler sur le tableau pour obtenir à chaque objet, puis sa valeur de la propriété, puis de les comparer, puis le coller dans un tableau. Quelles autres idées pourrait-il y avoir? Et pourquoi ne vous vous souciez de "moins" code à ce point quand vous n'avez pas écrit tout le code?
Vous devez vous connecter pour publier un commentaire.
Vous devriez appeler le
Array.prototype.filter
y fonctionner..filter()
vous oblige à revenir à l'état initial. Il va créer un nouveau tableau, basé sur les résultats filtrés. Si vous souhaitez utiliser ce filtreArray
, vous pouvez appeler plusieurs méthodes, comme dans votre exemple.map()
... et quelque part dans un avenir proche, nous pouvons éventuellement utiliser la Flèche fonctions de l'ES6, ce qui rend ce code encore plus de beauté:
for...in
boucle).Pur JS.... pas de filtre/fonctions des cartes, qui ne sont pas disponibles pour IE < 9
.length
et bien d'autres propriétés, si vous en boucle sur un Array à l'aide defor..in
.for...in
sera pas itérer sur la longueur. la longueur n'est pas une énumération de propriété.for...in
va pas parcourir plus de longueur dans n'importe quel navigateur intégré depuis l'aube des temps. Il a toujours été non énumérable, même de dos de manière quand enumerability était strictement un concept interne de moteurs.if (array.hasOwnProperty(key) && array[key].value == 1)
Vous pouvez utiliser une combinaison de
Array.prototype.filter
etArray.prototype.map
.Tout d'abord, filtrer seulement les valeurs avec
value
égal à1
.Ensuite, vous carte collection existante à un nouveau groupe, composé uniquement de
id
propriétés stockées dans le tableau filtré. Donc le code final:La bonne nouvelle, c'est que c'est facile, il suffit d'écrire
La mauvaise nouvelle est qu'il sera certain temps avant que vous pouvez compter sur tous les navigateurs pour ce faire. C'est à partir d'une nouvelle version de la langue appelée "ES6". Mais vous pouvez l'essayer dès maintenant dans Firefox!!
map
,filter
... ?