Javascript 按其他阵列筛选阵列的最优雅方式
我基本上创建了一个Javascript 按其他阵列筛选阵列的最优雅方式,javascript,arrays,ecmascript-6,Javascript,Arrays,Ecmascript 6,我基本上创建了一个getItemsByIds(ids)函数,其中items是一个对象数组,每个对象都有一个id键,ids是一个id数组 我对ES6还不熟悉,所以我相信有一种更优雅的方法来解决这个问题,因为我的所有服务都将具有这种类型的功能,所以我希望它尽可能优化。以下是我现在拥有的: getItemsByIds (ids) { return this.getAllItems().then(items => items.filter(item => { for
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;
}));
}
您可以将其转换为
ids.indexOf(item.id)>-1
getItemsByIds (ids) {
return this.getAllItems()
.then(items => items.filter(item => ids.indexOf(item.id) > -1));
}
如果您可以(例如)使用ES2016方法
Array#includes
,则可替代Array#indexOf
getItemsByIds (ids) {
return this.getAllItems()
.then(items => items.filter(item => ids.includes(item.id));
}
哦,太简单了。非常感谢。谢谢你,因为alex是第一个,他们的解决方案非常相似(都很好:),我给了他答案。
getItemsByIds (ids) {
return this.getAllItems()
.then(items => items.filter(item => ids.includes(item.id));
}