命令:
x シンプルで、単語の文字列を指定すると、最も短い単語の長さを返します。
文字列が空になることはなく、さまざまなデータ型を考慮する必要はありません。
説明によると, ここでは、空かデータ型かを判断する必要がないので、段落内の最も短いフォントの長さを自由に記述できます
最初は次のように書きました:
1 function findShort(s){2 var arr = s.split(' ').map(function(t){return t.length});3 return Math.min.apply(null,arr);4 }
ここで重要なことES6 以前のコード記述方法を使用することです。知識ポイントは 4 つあります:
1, string.split(' ')
Split() メソッドは、文字列を文字列配列に分割するために使用されます。この方法はシンプルでわかりやすいので、詳細は説明しません。
2、Array.map()
map() メソッドは、元の配列の各要素に対して順番にコールバック関数を 1 回呼び出して、新しい配列を形成します。配列。 。
参考リンク:こちらをクリックしてください
3, Math.min()
指定された値の中で最小の数値。数値に変換できないパラメータがある場合は、NaN が返されます。
参考リンク:こちらをクリックしてください
3, apply()
既存の関数を呼び出す際に、this オブジェクトを指定できます。これは現在のオブジェクト、つまりこの関数を呼び出すオブジェクトを指します。 apply を使用すると、このメソッドを一度作成すると、新しいオブジェクトで繰り返しメソッドを作成することなく、別のオブジェクトに継承できます。
参考リンク: ここをクリックしてください
その後、他の人の解決策を参照しました。 codewar には関数を 1 行で書ける優秀な人がたくさんいます。
1 function findShort(s){2 return Math.min(...s.split(' ').map(w=>w.length));3 }
メインのアプリケーションは次のとおりです。 ES6 の 2 つの新しい知識点。私は以前に ES6 を勉強したことがありますが、実務経験がないので、ここで復習します:
1, (...) は、配列の apply メソッドを置き換えることができるスプレッド演算子です。ここでは、配列を展開し、配列を関数パラメータに変換するために使用されます。
// ES5的写法Math.min.apply(null, [14, 3, 77])// ES6的写法Math.min(...[14, 3, 77])// 等同于Math.min(14, 3, 77);
参考リンク:こちらをクリックしてください
2、アロー関数(=>)
var f = v => v;//等同于var f = function(v) { return v; };//如果箭头函数不需要参数或需要多个参数,就使用一个圆括号代表参数部分。var f = () => 5;// 等同于var f = function () { return 5 };var sum = (num1, num2) => num1 + num2;// 等同于var sum = function(num1, num2) { return num1 + num2; };
アロー関数は式をより簡潔にします。
詳細はここをクリックしてください
添付ファイル: codewar-この演習の演習アドレス
以上がコード戦争の毎日の演習の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。