【問題】【9天】map/reduce

這裏問題是來自廖雪峰的教程map/reduce,這两天在進修reduce時總是弄不懂它的參數,做了他內里的幾個問題,清楚了許多,固然了我第一次做問題時,完整沒眉目,基本是看了下面的批評才明白的,先輩們的博客是很好的進修材料。

問題一:應用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的第二個參數是初始值。

問題三:請把用戶輸入的不範例的英文名字,變成首字母大寫,其他小寫的範例名字。輸入:[‘adam’, ‘LISA’, ‘barT’],輸出:[‘Adam’, ‘Lisa’, ‘Bart’]。

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

charAt()從一個字符串中返回指定的字符
slice()從最先到完畢,假如只要一個參數,到最後

問題四:小明願望應用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

    原文作者:UCCs
    原文地址: https://segmentfault.com/a/1190000014861182
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞