var arr = ["apple","orange","apple","orange","pear","orange"];
function getWordCnt(){
return arr.reduce(function(prev,next,index,arr){
prev[next] = (prev[next] + 1) || 1; //這句是重點
return prev;
},{});
}
console.log(getWordCnt());
function containsRepeatingLetter(str) {
return /([a-zA-Z])\1/.test(str); // \1指代第一個括號的匹配項
}
在正則表達式中,利用()進行分組,使用斜槓加數字表示引用,\1就是引用第一個分組,\2就是引用第二個分組。將[a-zA-Z]做為一個分組,然後引用,就可以判斷是否有連續重復的字母。
需要補全的代碼
var fn = function(a, b, c) {
return a + b + c
};
curryIt(fn)(1)(2)(3); //6
function curryIt(fn) {
//這裡補充
}
可以試著玩一下,這裡是用的函數的柯裡化
var fn = function(a, b, c) {
return a + b + c
};
console.log(curryIt(fn)(1)(2)(3)); //6
function curryIt(fn) {
var len = fn.length; //獲取函數形參數量
var slice = Array.prototype.slice;
var arg = slice.call(arguments, 1);
return function() {
arg = arg.concat(slice.call(arguments));
if(arg.length < len) { //當等於函數需要的形參數量時候調用
return arguments.callee;
}else{
return fn.apply(null,arg);
}
}
}