首頁 >web前端 >js教程 >code war每日小練習

code war每日小練習

巴扎黑
巴扎黑原創
2017-06-23 13:56:221212瀏覽

Instruction:

x Simple, given a string of words, return the length of the shortest word(s).

String will never be empty and you do not need to account for different data types.

根據描述,這裡不要求判斷是否為空和資料類型,所以就放心大膽的寫出一段話中最短字體的長度了

剛開始我是這麼寫的:

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()方法建立一個新數組,它會為原始數組中的每個元素按順序呼叫一次callback函數,callback每次執行後的返回值形成一個新數組。

    參考連結:請點選這裡

3,Math.min()

    給定數值中最小的數字。若任一參數不能轉換為數值,則傳回NaN。

    參考連結:請點擊這裡

3,apply()

    在呼叫一個存在的函數時,你可以為其製定一個this物件。 this指當前對象,也就是呼叫這個函數的對象。使用apply,可以只寫一次這個方法然後在另一個物件中繼承它,而不用在新物件中重複寫該方法。

    參考連結:請點這裡

後來參考了其他人的解決方法,codewar裡多得是有牛人能用一行就能把功能寫出來的,下面就是一種:

1 function findShort(s){2   return Math.min(...s.split(' ').map(w=>w.length));3 }

這裡主要運用到了ES6的兩個新的知識點,雖然之前也有學習過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-該習題練習地址

以上是code war每日小練習的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn