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

标签 javascript arrays

我有一个类似的数组

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

如何检查这个数组以查看“Magenic”是否存在?我不想循环,除非我必须这样做。我正在处理可能有几千条记录。

最佳答案

不需要重新发明 wheel 循环,至少不需要明确地(使用 arrow functionsmodern browsers only ):

if (vendors.filter(e => e.Name === 'Magenic').length > 0) {
  /* vendors contains the element we're looking for */
}

或者,更好,使用 some因为它允许浏览器在找到一个匹配的元素后立即停止,所以它会更快:

if (vendors.some(e => e.Name === 'Magenic')) {
  /* vendors contains the element we're looking for */
}

或等效项(在本例中)find :

if (vendors.find(e => e.Name === 'Magenic')) {
  /* same result as above, but a different function return type */
}

您甚至可以使用 findIndex 获取该元素的位置:

const i = vendors.findIndex(e => e.Name === 'Magenic');
if (i > -1) {
  /* vendors contains the element we're looking for, at index "i" */
}

如果您需要与糟糕的浏览器兼容,那么您最好的选择是:

if (vendors.filter(function(e) { return e.Name === 'Magenic'; }).length > 0) {
  /* vendors contains the element we're looking for */
}

关于javascript - 如何确定 Javascript 数组是否包含具有等于给定值的属性的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35231197/

相关文章:

javascript - 双击在 ios 和 android (PhoneJS) 上不起作用

java - 使用 .toArray 从 ArrayList[x]byte[] 转换为 byte[]?

c++ - 随机唯一整数的非标准排序算法

arrays - 如何从 Array{Array{Int64,2},1} 转换为 Array{Int64,2}

javascript - 找到匹配项时遍历 JSON 对象并更新值的正确方法是什么

javascript - 当我在字段中输入数字时,如何实时显示结果?

javascript - $http 获取逻辑只允许 200 OK

javascript - 检查数组中的值

javascript - 除非窗口获得焦点,否则文本字段不会获得焦点

javascript - Window.open 二进制数据 pdf 正在下载但不显示 pdf :Javascript