在JavaScript或Angular中检查一个值是否存在于数组对象中

7

我希望检查一个值是否存在于一个数组对象中。例如:

我有这个数组:

[
    {id: 1, name: 'foo'},
    {id: 2, name: 'bar'},
    {id: 3, name: 'test'}
]

我想检查这里是否存在 id = 2

4个回答

23
你可以使用 Array.prototype.some

var a = [
   {id: 1, name: 'foo'},
   {id: 2, name: 'bar'},
   {id: 3, name: 'test'}
];        

var isPresent = a.some(function(el){ return el.id === 2});
console.log(isPresent);


1
它能工作!但是有一个改变:var isPresent = a.some((el) => { el.id === 2}); - Stiven Castillo
是的,当然,我只是为了举例保留了 ES5 语法 :) - Karim
1
@stiv 你必须删除花括号,否则它将返回一个对象而不是一个 falsy 值:var isPresent = a.some((el) => el.id === 2); - steve-o

7
你可以使用 some() 方法。
如果你只想检查某个值是否存在,那么 Array.some() 方法(自 JavaScript 1.6 起)已经足够了,正如前面提到的那样。
let a = [
   {id: 1, name: 'foo'},
   {id: 2, name: 'bar'},
   {id: 3, name: 'test'}
];        

let isPresent = a.some(function(el){ return el.id === 2});
console.log(isPresent);

另外,find() 是一个可能的选择。
如果你想要获取某个特定键值的第一个对象,最好使用 Array.find() 方法。该方法自 ES6 已经存在。
let hasPresentOn = a.find(
  function(el) {
  return el.id === 2
  }
);
console.log(hasPresentOn);

6
您可以按以下方式使用find方法:

var x=[
    {id: 1, name: 'foo'},
    {id: 2, name: 'bar'},
    {id: 3, name: 'test'}
]
var target=x.find(temp=>temp.id==2)
if(target)
  console.log(target)
else
  console.log("doesn't exists")


1

试试这个:

let idx = array.findIndex(elem => elem.id === 2)
if (idx !== -1){
    // Your element exists
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接