私は、提供された配列から要素を削除する関数を作成するFreeCodeCampチャレンジ「探索と破棄」を行っています。配列内の配列をフィルタリングする
は、私は私それが直感的だったので、私は仕事に取り組んでいたソリューションを作ることができれば、私は様々なソリューションを見てきたが、結果は
[1, 1]
する必要があり、私は望んでいた
function destroyer(arr) {
// Remove all the values
destroyer([1, 2, 3, 1, 2, 3], 2, 3);
を考えますうまくいけば、私はフィルタリングのより良い理解につながるでしょう。私は、私のソリューションがうまくいかない理由は、私がこのメソッドを適切に使用していないためだと思う。
function destroyer(arr) {
// Remove all the values
var args = Array.prototype.slice.call(arguments);
//makes the arguments an array
function destroy(value) {
for (var i=1; i < args.length; i++)
return value !==args[i];
// creates a loop that filters all arguments after the first one and removes from the initial argument, regardless of how many there are.
}
var filtered = arr.filter(destroy);
return arr[0];
}
destroyer([1, 2, 3, 1, 2, 3], 2, 3);
が、私は最初の引数を最初の3つの引数がフィルタリングされているので、
var filtered = arr.filter(destroy);
が問題の可能性があることに気づいたが、ない:
filter();
とにかく、ここで私の試みです。しかし、私がやってみたら
var filtered = arr [0] .filter(破壊); 最初の引数を対象としていたと思いますが、エラーがスローされます。 この方法で問題を解決することは可能ですか?
function badValues(val){
return val !== 2;
}
function bouncer(arr) {
return arr.filter(badValues);
}
bouncer([1, null, NaN, 2, undefined]);
し、除去する必要がある引数に2を代用したい:私は、次の機能が設定され道を好きなので、私は、このようにそれをやってみたかったです。
ありがとうございました!
おそらくこのようなものですか? 'function destroyer(){ let args = Array.from(arguments);次のようにします。 let array = args [0]; args.shift(); return array.filter(e =>!args.includes(e)) } ' – Brian
あなたの' destroyer() '関数は引数を1つしか取っていませんが、あなたは3つを渡しています。 –
実装にはいくつかの問題があります。たとえば、 'destroy'関数は1回目の反復で返します。 'find'、' filter'のようなjavascriptの組み込み関数について学んでください...あなたのコードをより洗練された、賢く、より読みやすくします。 – RaphaMex