我在传递给过滤器的谓词中出错,得到了一个奇怪的结果。我当然应该写emp.gender === "F"
。然而,鉴于undefined
是假的,我原以为femaleEmployees
是一个空数组。但是,它包括原始数组的所有成员。
var employees = [
{ name: "bob", gender: "M" },
{ name: "lisa", gender: "F" },
{ name: "vera", gender: "F" }
];
var femaleEmployees = employees.filter(emp => emp.gender = "F");
我怀疑它与此有关,但我不完全确定如何:Why does "undefined equals false" return false?
答案 0 :(得分:1)
您需要使用==
或===
来比较值,而不是分配符号=
。非空字符串是一个真值,因此结果包含所有元素,因为它始终返回"F"
这是真实的(即,您将gender
属性更新为"F"
然后返回属性值为"F"
)。
var femaleEmployees = employees.filter(emp => emp.gender === "F");
参考:Which equals operator (== vs ===) should be used in JavaScript comparisons?