Javascript Array.prototype.filter() 不工作

IT技术 javascript arrays
2021-01-14 03:46:09

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

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

我在这里做错了什么??

编辑:

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

1个回答

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

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

您不需要声明和分配变量然后从函数中返回它,您可以简单地返回表达式