対JavaScriptの反復:両方のコードは、コードが入っている場合は、単純にtrue
を返し、同じことを行う必要があります私はこの違いについて疑問に思ってフィルタマップ
function doesCodeExist(arrvalidcodes, code) {
for (var i = 0; i < arrvalidcodes.lenght; i++) {
if (arrvalidcodes[i] === code) {
return true;
}
}
return false;
}
:
function doesCodeExist(arrvalidcodes, code) {
var hit = arrvalidcodes.filter(function(item){
return (code === item)
}).map(function(item){
return true;
});
if (hit[0] === true) {
return true;
} else {
return false;
}
}
と、この指定された配列またはそれ以外の場合はfalse
を返します。
これは最も読みやすく、効率的な方法です。
私は、最初の部分がすべての項目をループしている間に、あなたが何かを見つけたら直ちにforループが存在するので、2番目のブロックがより効率的だと言います(そして、それもまた読み込まれません。 2番目の部分 – Icepickle
これは読みやすいと思いますか?この{if(hit [0] === true){ trueを返します; } else { return false; } 'これを短縮できます:' returnヒット[0] === true; ' – Craicerjack
@Craicerjack' hit [0] 'は、' true'以外のもの、 'undefined'(後者の場合は' hit.length === 0')どちらの方法でも、このように '.filter'と' .map'を使うと、直感的で非効率的で、配列内の要素の存在をチェックする非効率的な方法です。 – Alnitak