array.filter如何检查示例代码中的Array差异?

时间:2015-02-18 14:46:38

标签: javascript arrays array-difference

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

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

3 个答案:

答案 0 :(得分:0)

indexOf(x)返回属性的索引。所以0是第一个属性,-1表示没有找到属性。

答案 1 :(得分:0)

如果在数组中找不到b.indexOf(x),则

x会返回数组b -1中参数x的索引b

因此,如果 <{1}}和x数组中a不存在,则b会返回indexOf() },允许-1出现在结果中。

答案 2 :(得分:0)

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

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