我基本上创建了一个getItemsByIds(ids)
函数,其中items
是一个对象数组,每个对象都有一个id
键,ids
是一个id数组。
我对ES6很新,所以我确信有一个更优雅的方法可以解决这个问题,而且由于我所有的服务都有这种功能我喜欢它尽可能优化。这就是我现在所拥有的:
getItemsByIds (ids) {
return this.getAllItems().then(items => items.filter(item => {
for (var i = 0; i < ids.length; i++) {
if (item.id == ids[i]) {
return true;
}
}
return false;
}));
}
就像我说的那样,items
数组基本上是这样的:
[{id: 0, name: 'Foo'}, {id: 1, name: 'Bar'}, {id: 2, name: 'Baz'}]
答案 0 :(得分:2)
您可以将其转换为ids.indexOf(item.id) > -1
。
getItemsByIds (ids) {
return this.getAllItems()
.then(items => items.filter(item => ids.indexOf(item.id) > -1));
}
答案 1 :(得分:2)
Array#indexOf
的替代方案,如果您可以使用(例如polyfilled),则是ES2016方法Array#includes
。
getItemsByIds (ids) {
return this.getAllItems()
.then(items => items.filter(item => ids.includes(item.id));
}