使用JavaScript中的过滤器转换简单逻辑

时间:2019-05-07 12:19:28

标签: javascript

我不熟悉ES6功能,因此尝试在代码中应用过滤器逻辑。我当前的forEach代码可以正常工作,但是我正在应用类似下面的过滤器:

export function filterContactList(itemArray: any[]) {
const list = [];
if (itemArray.length > 0) {
itemArray.forEach(item => {
  if (contactIds.includes(item.id)) {
    list.push(item);
  }
});
}
return list;
}

//我要替换的内容:

itemArray(item => contactIds.includes(item.id))

5 个答案:

答案 0 :(得分:4)

您可以过滤数组。

return itemArray.filter(item => contactIds.includes(item.id));

答案 1 :(得分:3)

filter函数通过创建一个仅包含通过条件的元素的新数组来工作。

let list = itemArray.filter(item => contactIds.includes(item.id));

这将创建一个名为list的新数组,其中包含来自itemArray的满足您设置的条件的元素。

答案 2 :(得分:0)

var contactIds = "test";
function filterContactList(itemArray: any[]) {
return itemArray.filter(item => contactIds.includes(item.id));
}

答案 3 :(得分:0)

一切正常,但据我所知,过滤器不适用于IE。

因此我们可以替换为自定义过滤器功能。

var customFilter = function (itemArray, contactIds) {
           var list = [];
            for (var i = 0; i < itemArray.length; i++) {
                var item=itemArray[i];
                if (contactIds.indexOf(item.id)>-1) {
                    list.push(item);
                }
            }
   return list;
}

答案 4 :(得分:0)

使用数组的.filter()方法将创建一个新数组,该数组包含所有通过提供的函数实现的测试的元素,如下所示:

function filterContactList(itemArray){
   const contactIds = [1,2,3];
   return itemArray.filter(item => contactIds.includes(item.id));

}
console.log(filterContactList([{id:1},{id:2},{id:3},{id:4},{id:5}]));