【題目】【9天】map/reduce

這裏題目是來自廖雪峯的教程map/reduce,這兩天在學習reduce時總是弄不懂它的參數,作了他裏面的幾個題目,清晰了不少,固然了我第一次作題目時,徹底沒頭緒,基本是看了下面的評論才理解的,前輩們的博客是很好的學習資料。segmentfault

題目一:利用reduce求積函數

var arr = [1,2,3,4,5];
arr.reduce((x,y) => x*y)

題目二:字符串13579先變成Array——[1, 3, 5, 7, 9],再利用reduce()把字符串轉換爲Number的函數。學習

var str = '13579';
var a = str.split('');
console.log(a);        // ["1", "3", "5", "7", "9"]

var b = a.map((x) => +x);
console.log(b);       // [1, 3, 5, 7, 9]

var c = b.reduce((x,y) => x*10+y);
console.log(typeof c);       //number

//str.split('').map((x) => +x).reduce((x,y) => x*10+y);

作這題時,本身是看了評論纔會,不理解的地方就一步步用console.log()一個個打印出來。評論區裏有人說+xx*1是什麼意思,其實用console.log()打印出來就知道是啥意思了,就是把字符串變成數字;對於reduce參數的理解:我認爲它接受的函數的第一個參數是每次操做的結果,第二個參數是每次操做的內容,不知道可不能夠這樣理解,reduce的第二個參數是初始值。3d

題目三:請把用戶輸入的不規範的英文名字,變爲首字母大寫,其餘小寫的規範名字。輸入:['adam', 'LISA', 'barT'],輸出:['Adam', 'Lisa', 'Bart']。code

function normalize(arr) {
    return  arr.map((x) => {
        return x.charAt(0).toUpperCase() + 
        x.slice(1).toLowerCase();
    });
}

charAt()從一個字符串中返回指定的字符
slice()從開始到結束,若是隻有一個參數,到最後orm

題目四:小明但願利用map()把字符串變成整數,他寫的代碼很簡潔:教程

var arr = ['1', '2', '3'];
var r;
r = arr.map(parseInt);
console.log(r);    //[1, NaN, NaN]

r = arr.map(x => parseInt(x));
console.log(r)    //[1,2,3]

parseInt()接受兩個參數:第一個參數是須要轉換成數字的字符串,第二個參數是基數,默認是0,10進制,若是是小於2或者大於36,則返回NaN
map()forEach()同樣接受三個參數:value key arrayArray基本概念有介紹。因此:
第一次接受到的參數是map('1',0,[1,2,3]),parseInt('1',0),結果爲1
第二次接受到的參數是map('2',1,[1,2,3]),parseInt('2',1),結果爲NaN
第三次接受到的參數是map('3',2,[1,2,3]),parseInt('3',2),結果爲NaN字符串

相關文章
相關標籤/搜索