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));
}