我不熟悉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))
答案 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}]));