ホームページ >ウェブフロントエンド >jsチュートリアル >コード戦争の毎日の練習
暇なときに質問してください:
この質問は、同じ隣接する要素を削除し、新しい配列を返すことを意味します。
ここでは Array.filter メソッドが最適です。私の答えは次のとおりです:
var uniqueInOrder=function(iterable){ var arr = typeof(iterable) === 'string' ? iterable.split('') : iterable; var pre = ''; return arr.filter(function(i){if(i === pre){ return false; }else{ pre = i; return true; } }) }
ここで、filter は元の配列を変更せず、新しい配列を返すだけであり、delete という関数もあることに注意してください。 false 値を返す場合は、true を返す値を保持します。
2 番目の答えがあります:
var uniqueInOrder=function(iterable){ var arr = typeof(iterable) === 'string' ? iterable.split('') : iterable; var pre = '',result = []; arr.map(function(i){if(i !== pre){ result.push(pre = i); } }); return result; }
これは、別の空の配列を使用して修飾された値を再現することです。
送信後、ソリューションエリアで非常に賢明な答えを見ました:
var uniqueInOrder = function (iterable){ return [].filter.call(iterable, (function (a, i) { return iterable[i - 1] !== a })); }
ここでは call メソッドを使用して、反復可能に array.filter を賢く呼び出します。これは、それが配列であるかどうかがわからない反復可能にも当てはまります。配列または文字列を操作するために、文字列を配列に変換するのに苦労する必要はありません。
次に、フィルターの戻り値の特性を利用して、各要素を前の要素と順番に比較し、等しくない場合は true を返し、現在の要素を保持します。
この質問は比較的簡単です。
もう 1 つの簡単な質問:
これは非常に簡単なので、答えを直接投稿します:
function average(scores) { var result = 0; scores.map(i=>result+=i); return Math.round(result/scores.length); }
例として結論エリアを表示する最良の方法:
function average(scores) { return Math.round(scores.reduce((x, y) => x+y, 0) / scores.length) }
以上がコード戦争の毎日の練習の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。