我试图通过检查indexOf(x)是否等于-1来了解array.filter如何返回数组差异?为什么-1?
function array_diff(a, b) {
return a.filter(function(x) { return b.indexOf(x) == -1; });
}
答案 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。