JavaScript 数组:Includes 的相反操作

49

在JavaScript中,移除具有特定字段的对象的正确方法是什么?

我可以使用以下方式包含字段:

filteredResult = filteredResult.filter(e => e.selectedFields.includes("Red"));

但是如果我想删除所有具有此字段的属性,该怎么办?文档中似乎没有“删除”的选项。

但是如果我想要移除所有拥有这个字段的属性,我应该怎么做呢?文档中好像没有“删除”的选项。

3个回答

97

只需要取反它。

filteredResult = filteredResult.filter(e => !e.selectedFields.includes("Red"))

没关系,我们都偶尔会错过显而易见的东西。不过仔细看了一下,我觉得这段代码没有多大意义——你肯定希望筛选函数中有些内容取决于e的值吧?也许你的意思是selectedFields.includes(e) - tremby
1
可能是 e.selectedFields.includes("Red') - Barmar
现在看来,我同意,这没有太多意义。我想我需要重新审查我的过滤。感谢您指出了正确的方向。 - lost9123193

4

您可以通过使用indexOf属性来否定includes的结果,甚至更简洁:

const arr = [1, 2, 3];

const notIncludes1 = (arr, val) => !(arr.includes(0));
const notIncludes2 = (arr, val) => arr.indexOf(val) === -1;

-1
filteredResult = filteredResult.filter((l) => (['Red', 'Blue','Yellow'].every(y => !l.selectedFields.toLowerCase().includes(y.toLowerCase()))));

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