'use strict'; var arr = [1, 2, 3, 4, 5] var value = arr.reduce(function(x, y) { // 求积 return x * y; }) console.log(value); // output: 120
/** * 将字符串转为数字 * @param s 字符串 * @returns 数字 */ function string2int(s) { if (s.length == 1) { let k = s - 0; return k; } // 先把字符串转为数组 eg: "12345" => ["1","2","3","4","5"] var strArr = s.split("") // 将数组转为 number var k = strArr.reduce(function(x, y) { return x + y - 0; }) // console.log(typeof(k)); // number // console.log(k); return k; } console.log(string2int('123456')); // output: 123456 console.log(string2int('12300')); // output: 12300 console.log(string2int('0')); // output: 0 console.log(string2int('0123')); // output: 123
/** * 使英文名称规范,第一个字母大写,其余小写 * @param {* } arr * @returns */ function normalize(arr) { // 获取第一个字母然后转为大写,获取剩下的字母转为小写,然后将两个拼接 return arr.map(item => item.slice(0, 1).toUpperCase() + item.slice(1).toLowerCase() ) } console.log(normalize(["abCD", "abcD", "AbcD"])); // output:["Abcd","Abcd","Abcd"]
parseInt(string, radix**)** 解析一个字符串并返回指定基数的十进制整数, radix 是2-36之间的整数,表示被解析字符串的基数。
直接在 map() 方法使用,这边的 radix 进制会引用到数组的索引。
map()
radix
逐一分析:
第一次:parseInt(1, 0)``0 会调用默认 10 进制,因此返回 1。
parseInt(1, 0)``0
10
1
第二次:parseInt(2, 1)``radix 为 1,不在范围内,错误返回 NaN。
parseInt(2, 1)``radix
NaN
第三次:parseInt(3, 2)``radix 为 2,在范围内,二进制范围是 0-1超过范围,错误返回 NaN。
parseInt(3, 2)``radix
2
0-1
'use strict'; var arr = ['1', '2', '3']; var r = arr.map(item => parseInt(item) ); console.log(r); // output: [1, 2, 3]
'use strict'; var arr = ['1', '2', '3']; var r = arr.map(Number); console.log(r); // output: [1, 2, 3]
Sign in to make a reply
云胡
高阶函数 map 和 reduce 练习题题解
一、利用 reduce() 求积:
二、将字符串转为数字
三、规范化英文名称
四、使用 map() 将字符串转为整数
parseInt(string, radix**)** 解析一个字符串并返回指定基数的十进制整数, radix 是2-36之间的整数,表示被解析字符串的基数。
直接在
map()
方法使用,这边的radix
进制会引用到数组的索引。逐一分析:
第一次:
parseInt(1, 0)``0
会调用默认10
进制,因此返回1
。第二次:
parseInt(2, 1)``radix
为1
,不在范围内,错误返回NaN
。第三次:
parseInt(3, 2)``radix
为2
,在范围内,二进制范围是0-1
超过范围,错误返回NaN
。