indexOf对象数组而不是数组

Ala*_*hen 2 javascript ecmascript-6

我知道在数组中找到一个值是否存在我可以使用indexOf,但是如何使用一个对象数组呢?

const x = [{
  "id": "roadshows",
  "name": "Roadshows"
}, {
  "id": "sporting_events",
  "name": "Sporting Events"
}]

console.log( x.indexOf('roadshows') ) // don't work
Run Code Online (Sandbox Code Playgroud)

Pat*_*rts 6

由于这是标记为,这是一个ES6数组方法Array#findIndex()::

const x = [{
  "id": "roadshows",
  "name": "Roadshows"
}, {
  "id": "sporting_events",
  "name": "Sporting Events"
}]

console.log( x.findIndex( o => o.id === 'roadshows' ) )
Run Code Online (Sandbox Code Playgroud)

如果您想要一种更可重用的方法,请考虑创建一个工厂isId(id):

function isId(id) {
  return (o) => o.id === id;
}

const x = [{
  "id": "roadshows",
  "name": "Roadshows"
}, {
  "id": "sporting_events",
  "name": "Sporting Events"
}]

console.log( x.findIndex( isId('roadshows') ) )
Run Code Online (Sandbox Code Playgroud)

这被称为"工厂",因为它是一个函数,在其范围内返回一个带有传递参数的函数.