フィルタに渡された述語でエラーが発生し、不思議な結果が得られました。もちろん私はemp.gender === "F"
と書かれているはずです。それにもかかわらず、undefined
が虚偽であることを考えると、femaleEmployees
は空の配列になるはずです。ただし、元の配列のすべてのメンバーが含まれます。Array.prototype.filterで定義されていないものがfalseでないのはなぜですか?
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?
は確かにあなたはそこにタイプミスを持っていませんか?あなたの投稿では 'emp.gender =" F "'と読みます。それはチェックではありません – entio
'emp.gender =" F "'それは常に真です( "F"は真実です)。変数を代入しているのであれば、代わりにそれを比較したかったでしょう。 – briosheje
各繰り返しの戻り値は "F"であり、これは真です。 –