我有一个数组

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

我如何检查这个数组,看看“Magenic”是否存在?我不想循环,除非迫不得已。我可能要处理几千条记录。


当前回答

根据ECMAScript 6规范,您可以使用findIndex。

const magenicIndex =供应商。findIndex(供应商=>供应商。= = = ' Magenic')名称;

magenicIndex将保留0(这是数组中的索引)或-1(如果没有找到)。

其他回答

如果你正在使用jquery,你可以利用grep来创建所有匹配对象的数组:

var results = $.grep(vendors, function (e) {
    return e.Name == "Magenic";
});

然后使用结果数组:

for (var i=0, l=results.length; i<l; i++) {
    console.log(results[i].ID);
}

我宁愿用正则表达式。

如果您的代码如下所示,

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

我推荐

/"Name":"Magenic"/.test(JSON.stringify(vendors))

如果我错了请指正。 我可以像这样使用每种方法,

var found=false;
vendors.forEach(function(item){
   if(item.name === "name"){
       found=true;

   }
});

现在我已经习惯了,因为它简单明了。 谢谢你!

const check = vendors.find((item)=>item.Name==='Magenic')

console.log(check)

试试这段代码。

如果项目或元素存在,则输出将显示该元素。如果它不存在,那么输出将是“未定义的”。

根据ECMAScript 6规范,您可以使用findIndex。

const magenicIndex =供应商。findIndex(供应商=>供应商。= = = ' Magenic')名称;

magenicIndex将保留0(这是数组中的索引)或-1(如果没有找到)。