过滤器的反义词 es2016

3

当我删除用户后,我会执行以下代码。

users.filter(obj => obj.id === user.id);

这是错误的,因为现在我的用户对象中只剩下一个用户对象,相反,我应该基于id从列表中删除项目。 所以我想知道是否有任何与过滤函数相反的函数?


5
users.filter(obj => obj.id !== user.id); - Weedoze
1
Array.prototype.keep = function (cb) { return this.filter(i => !cb(i)); } - deceze
@deceze 不过,从语义上讲,users.keep(obj => obj.id === user.id)并没有太多意义... - deceze
4个回答

5

过滤的反义词是筛选。您只需要指定要保留的内容。

例如,如果您想要奇数:

[1,2,3,4,5,6].filter(x => x%2 != 0);

如果你想要相反的结果:

[1,2,3,4,5,6].filter(x => x%2 == 0);

3

JavaScript没有像Ruby语言中的Array#reject那样的filter函数的反向功能。正如其他答案中提到的,您应该在传递给filter的函数中否定条件。


2

你只需在回调函数中更改条件即可。

users.filter(obj => obj.id !== user.id);

1
如果您需要反转回调函数,可以这样做:

如果你需要反转回调函数,你可以这样做:

myArray.filter((x,y,z) => !callbackFunction(x,y,z));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接