一尘不染

如何确定Javascript数组是否包含属性等于给定值的对象?

javascript

我有一个像

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

如何检查此数组以查看Magenic是否存在?除非必须,否则我不想循环播放。我正在处理几千条记录。


更新

由于这是一个受欢迎的帖子,所以我想分享一些新发现。看来@CAFxX已经分享了!我应该更经常阅读这些内容。

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

借助 ECMAScript 2015 ,使用新的箭头功能甚至更加简单:

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

阅读 250

收藏
2020-04-25

共1个答案

一尘不染

2018 edit
:这个答案来自2011,当时浏览器没有广泛支持数组过滤方法和箭头功能。。

没有“魔术”的方法来检查数组中没有循环的内容。即使使用某些函数,该函数本身也会使用循环。您所能做的就是在找到要查找的内容后立即打破循环,以最大程度地减少计算时间。

var found = false;
for(var i = 0; i < vendors.length; i++) {
    if (vendors[i].Name == 'Magenic') {
        found = true;
        break;
    }
}
2020-04-25