廖雪峰JavaScript课程–map/reduce
map
使用map把某一个函数作用在数组上。
reduce
Array的reduce()把一个函数作用在这个array的[x1,x2,x3…]上,这个函数必须接受两个参数,reduce()把结果继续和序列的下一个元素做累积计算,效果为:
练习1: 利用reduce()求积:
'use strict;'
function product(arr) {
return arr.reduce(function(x,y) { //注意return arr.reduce之后的结果
return x*y }
)
}
练习2:把字符串13579转换为number的函数
‘use strict;’
function string2int(s) {
arr1=s.split( '') //用split把字符串变成字符串数组
arr2=arr1.map(function(x,y) {
return x-'0'}) //字符串数组变成单个数字的数组
return arr2.reduce(function(x,y) {
return x*10+y})
}
练习3:把用户输入的不规范的英文名字,变为首字母大写,其他小写的规范名字。
‘use strict’;
function normalize(arr) {
return arr.map(function(str) { //调用
return str[0].toUpperCase() + str.substring(1,str.length).toLowerCase()}
)
}
练习4: 使用parseInt把字符串转化为数字
‘use strict’;
var arr=['1', '2', '3']
var r
function returnInt(str) {
return parseInt(str, 0) //parseInt有两个参数, 这里指定radix为0或者10,将str解析为10进制的整数
}
r=arr.map(returnInt) //不直接调用parseInt, 指定radix参数之后再调用,避免出现NaN的情况
//解法2: 直接使用Number(value)函数
‘use strict’;
var arr=['1', '2', '3']
var r
r=arr.map(Number)
直接使用parseInt报错原因