1

这里题目是来自廖雪峰的教程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
756 声望88 粉丝

3年 gis 开发,wx:ttxbg210604