ちょっと私の脳を掘り下げてこの記事の記事を読んでいて、私が読んだことはすべて「ある文字列」や「a」が真実だと言われています。文字列や文字が間違っていると言った偽の項目を除外するために配列をテストしてください。私はisNaN(arr[i]) === true
はそれを渡すように引き起こしている私のコードですなぜ文字か文字列がjavascriptで偽であると考えられるのですか
ちょっと私の脳を掘り下げてこの記事の記事を読んでいて、私が読んだことはすべて「ある文字列」や「a」が真実だと言われています。文字列や文字が間違っていると言った偽の項目を除外するために配列をテストしてください。私はisNaN(arr[i]) === true
はそれを渡すように引き起こしている私のコードですなぜ文字か文字列がjavascriptで偽であると考えられるのですか
を.filter(ブール値)を使用してこの問題を解決する方法を知っていますが、私のコードはここに働かない理由を知りたいです。 "some string"
はNumberに強制変換され、isNaNはtrueと評価されます。
は、あなたのケースのためにhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/isNaN#Examples
を参照してください、ますisNaN( "いくつかの文字列")は真になります。
試してみてください。
function filter(arr) {
var filteredArray = [];
for (var i = 0; i < arr.length; i++) {
if (arr[i]) {
filteredArray.push(arr[i]);
}
}
return filteredArray;
}
はあなたも
if (arr[i] == false) {
}
によって
if (arr[i]) {
}
を置き換えることができます覚えておいてください===また、値のタイプに比較しています。
数値として解析できない文字列はNaN
に強制されるため、問題はisNaN(arr[i])
です。 isNaN
を使用する場合は、番号であるかどうか最初にテストする必要があります。あなたはまた、Number.isNaN(arr[i])
を使用することができます
(typeof arr[i] === 'number' && isNaN(arr[i]))
:だからと
isNaN(arr[i]) === true
を交換してください。これは引数を最初に強制するのではなく、引数が数値でなければfalse
を返します。
@dandavisありがとう、私は答えにそれを加えました。 – Barmar
明確にするために、どのような比較(など)を質問していますか? –
'if(arr [i])'だけで十分ですか? 'arr [i]'が偽であるかどうかをチェックするには! 'if(arr [i]){truthy} else {falsy}'!あるいは 'NOT!' 'if(!arr [i]){falsy}'を使って! –