294 votes

Comment obtenir l'index d'un objet par sa propriété en JavaScript ?

Par exemple, j'ai :

var Data = [
  { id_list: 1, name: 'Nick', token: '312312' },
  { id_list: 2, name: 'John', token: '123123' },
]

Alors, je veux trier/renverser cet objet par name par exemple. Et puis je veux obtenir quelque chose comme ça :

var Data = [
  { id_list: 2, name: 'John', token: '123123' },
  { id_list: 1, name: 'Nick', token: '312312' },
]

Et maintenant je veux connaître l'index de l'objet avec la propriété name='John' pour obtenir la valeur du jeton de propriété.

Comment puis-je résoudre le problème ?

0 votes

Pourquoi voulez-vous d'abord trier la liste avant de rechercher le bien ?

0 votes

Les objets JavaScript sont {Key:Value} je l'ai réparé pour toi.

0 votes

1voto

Eugene Lyzo Points 101
collection.findIndex(item => item.value === 'smth') !== -1

0 votes

Bien que cet extrait de code puisse résoudre la question, y compris une explication contribue vraiment à améliorer la qualité de votre article. N'oubliez pas que vous répondez à la question pour les lecteurs à venir, et que ces personnes pourraient ne pas connaître les raisons de votre suggestion de code. Essayez également de ne pas encombrer votre code de commentaires explicatifs, car cela réduit la lisibilité du code et des explications !

0 votes

Une explication s'impose. Vous pouvez modifiez votre réponse (mais sans "Editer :", "Mettre à jour :", ou similaire - la réponse doit apparaître comme si elle avait été écrite aujourd'hui).

1voto

Akash Singh Points 387

Si vous voulez obtenir la valeur du jeton de propriété, vous pouvez également essayer ceci :

    let data=[
      { id_list: 1, name: 'Nick', token: '312312' },
      { id_list: 2, name: 'John', token: '123123' },
    ]

    let resultingToken =  data[_.findKey(data,['name','John'])].token

donde _.findKey est un Lodash función.

0voto

hypno7oad Points 486

Alternativement à La réponse de German Attanasio Ruiz vous pouvez éliminer la deuxième boucle en utilisant Array.reduce() au lieu de Tableau.map() ;

var Data = [
    { name: 'hypno7oad' }
]
var indexOfTarget = Data.reduce(function (indexOfTarget, element, currentIndex) {
    return (element.name === 'hypno7oad') ? currentIndex : indexOfTarget;
}, -1);

0voto

Iman Marashi Points 2465

Vous pouvez utiliser findIndex en Lodash bibliothèque.

Ejemplo:

var users = [
{ 'user': 'barney',  'active': false },
{ 'user': 'fred',    'active': false },
{ 'user': 'pebbles', 'active': true }
            ];

_.findIndex(users, function(o) { return o.user == 'barney'; });
// => 0

// The `_.matches` iteratee shorthand.
_.findIndex(users, { 'user': 'fred', 'active': false });
// => 1

// The `_.matchesProperty` iteratee shorthand.
_.findIndex(users, ['active', false]);
// => 0

// The `_.property` iteratee shorthand.
_.findIndex(users, 'active');
// => 2

-3voto

M Faisal Hameed Points 71

Utilisation de Underscore.js :

var index = _.indexOf(_.pluck(item , 'name'), 'Nick');

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X