コード戦争の毎日の練習

巴扎黑
リリース: 2017-06-27 09:12:31
オリジナル
1535 人が閲覧しました

暇なときに質問してください:

この質問は、同じ隣接する要素を削除し、新しい配列を返すことを意味します。

ここでは 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 サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート