array.filter如何在我的示例代码中检查array差异

How is array.filter checking for Array differences in my sample code?

本文关键字:array 代码 检查 差异 我的 filter      更新时间:2024-01-12

我试图通过检查indexOf(x)是否等于-1来理解array.filter是如何返回数组差异的?为什么是-1?

function array_diff(a, b) {
    return a.filter(function(x) { return b.indexOf(x) == -1; });
}

indexOf(x)返回属性的索引。因此0是第一个属性,-1表示找不到任何属性。

b.indexOf(x)返回数组b-1中参数x的索引(如果在数组b中找不到x)。

因此,如果ab数组的中都不存在x,则indexOf()返回-1,允许x出现在结果中。

function array_diff(a, b) {
    return a.filter(function(x) { return b.indexOf(x) == -1; });
}

对于数组a的每个项,查看它是否存在于数组b中。如果没有(indexOf()返回-1),则返回true,并将其保留在数组中。如果它在两个数组中,则返回false。