Как определить, содержит ли массив Javascript объект с атрибутом, равным заданному значению? - PullRequest
456 голосов
/ 21 ноября 2011

У меня есть массив как

vendors = [
    {
      Name: 'Magenic',
      ID: 'ABC'
     },
    {
      Name: 'Microsoft',
      ID: 'DEF'
    } //and so on goes array... 
];

Как проверить этот массив, чтобы увидеть, существует ли Magenic? Я не хочу зацикливаться, если я не должен. Я работаю с потенциально несколькими тысячами записей.

ОБНОВЛЕНО

Поскольку это был популярный пост, я решил поделиться чем-то новым, что нашел. И, кажется, @CAFxX уже поделился этим! Я должен читать это чаще. Я наткнулся https://benfrain.com/understanding-native-javascript-array-methods/.

vendors.filter(function(vendor){ return vendor.Name === "Magenic" });

А с ECMAScript 2015 еще проще использовать новые функции стрелок:

vendors.filter(vendor => (vendor.Name === "Magenic"));

Ответы [ 21 ]

0 голосов
/ 06 августа 2018

Многие ответы здесь хорошие и довольно простые. Но если ваш массив объектов имеет фиксированный набор значений, вы можете использовать следующий трюк:

Отобразить все имена в объекте.

vendors = [
    {
      Name: 'Magenic',
      ID: 'ABC'
     },
    {
      Name: 'Microsoft',
      ID: 'DEF'
    }
];

var dirtyObj = {}
for(var count=0;count<vendors.length;count++){
   dirtyObj[vendors[count].Name] = true //or assign which gives you true.
}

Теперь этот dirtyObj можно использовать снова и снова без какого-либо цикла.

if(dirtyObj[vendor.Name]){
  console.log("Hey! I am available.");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...