我在客户端上运行了这段代码,用于过滤事件列表:
if (res)
{
eventList.filter(function(event) {
const out = res.find(function(visibility) { return visibility.ID == event.id; }) == undefined;
return out;
});
alert(eventList);
}
displayEvents(eventList);
问题是,即使out
为false
,该元素也不会被过滤掉。
只是为了调试我在任何情况下都试过return false
,结果数组仍然有所有的初始元素:
eventList.filter(function(event) {
return out;
});
我在这里做错了什么?
编辑:
res
是服务器返回的JSON对象数组(仅包含ID
字段),而eventList
是Facebook事件列表,从Facebook传递给此回调函数API请求
答案 0 :(得分:5)
Array.prototype.filter
不会更改数组inplace,它返回由满足提供的谓词的项组成的新数组。看起来应该是这样的
var result = eventList.filter(function(event) {
return res.find(function(visibility) { return visibility.ID == event.id; }) === undefined;
});
您不需要声明和赋值变量然后从函数返回它,您只需返回表达式
即可