这里题目是来自廖雪峰的教程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()
一个个打印出来。评论区里有人说+x
和x*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
array
,Array基本概念有介绍。所以:
第一次接受到的参数是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
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。