Javascript Array.prototype.filter()不起作用

时间:2017-10-07 10:14:49

标签: javascript arrays

我在客户端上运行了这段代码,用于过滤事件列表:

if (res)
{
    eventList.filter(function(event) {

        const out = res.find(function(visibility) { return visibility.ID == event.id; }) == undefined;
        return out;
    });

    alert(eventList);
}

displayEvents(eventList);

问题是,即使outfalse,该元素也不会被过滤掉。

只是为了调试我在任何情况下都试过return false,结果数组仍然有所有的初始元素:

eventList.filter(function(event) {

    return out;
});

我在这里做错了什么?

编辑:

res是服务器返回的JSON对象数组(仅包含ID字段),而eventList是Facebook事件列表,从Facebook传递给此回调函数API请求

1 个答案:

答案 0 :(得分:5)

Array.prototype.filter不会更改数组inplace,它返回由满足提供的谓词的项组成的新数组。看起来应该是这样的

var result = eventList.filter(function(event) {
    return res.find(function(visibility) { return visibility.ID == event.id; }) === undefined;
});

您不需要声明和赋值变量然后从函数返回它,您只需返回表达式

即可