廖雪峰JavaScript教程笔记——map/reduce
来源:互联网 发布:js原型链 编辑:程序博客网 时间:2024/05/16 11:00
练习1:
不要使用JavaScript内置的parseInt()
函数,利用map和reduce操作实现一个string2int()
函数:
function string2int(s) { function str2num(str){ var strArr = str.split(''); //把字符串分割成字符串数组 function toInt(data){ return +data; //通过js的弱类型转换,实现字符类型到数字类型的转换 } var numArr = strArr.map(toInt); //通过map()把字符串数组转换成数字数组 return numArr; } var num = str2num(s); var res = num.reduce(function (x,y) { //通过reduce()把数字数组转换成数字量 return x*10+y; }); return res;}
练习2:
请把用户输入的不规范的英文名字,变为首字母大写,其他小写的规范名字。输入:['adam', 'LISA', 'barT']
,输出:['Adam', 'Lisa', 'Bart']
。
function normalize(arr) { function changetoName(name){ var newname = name[0].toUpperCase()+name.substring(1).toLowerCase(); return newname; } return arr.map(changetoName); }
练习3:
小明希望利用map()把字符串变成整数,他写的代码很简洁:
var arr = ['1', '2', '3'];var r;r = arr.map(parseInt);alert('[' + r[0] + ', ' + r[1] + ', ' + r[2] + ']');
结果竟然是[1, NaN, NaN],小明百思不得其解,请帮他找到原因并修正代码。
arr.map会为调用的函数传入以下三个参数:
1、currentValue,数组中当前被传递的元素。
2、index,数组中当前被传递的元素的索引。
3、array,调用 map 方法的数组。
而parseInt可以接受两个参数:
1、string:必需。要被解析的字符串。
2、radix:可选。表示要解析的数字的基数。该值介于 2 ~ 36 之间。
如果省略该参数或其值为 0,则数字将以 10 为基础来解析。如果它以 “0x” 或 “0X” 开头,将以 16 为基数。
如果该参数小于 2 或者大于 36,则 parseInt() 将返回 NaN。
所以实际上是执行了:
parseInt(‘1’,0,[‘1’,’2’,’3’]);//1
parseInt(‘2’,1,[‘1’,’2’,’3’]);//NaN
parseInt(‘3’,2,[‘1’,’2’,’3’]);//NaN
所以修正的代码应为:
r = arr.map(function(x) { return parseInt(x,10) });或者r = arr.map(function(x) { return parseInt(x) });
阅读全文
0 0
- 廖雪峰JavaScript教程笔记——map/reduce
- 廖雪峰javascript教程学习笔记
- 廖雪峰的Python-map/reduce
- 【廖雪峰Python习题集】map/reduce
- 廖雪峰JavaScript教程
- javascript学习笔记(廖雪峰javascript教程)
- git学习笔记——廖雪峰git教程
- 廖雪峰Python教程阅读笔记——5. 模块
- python生成器——廖雪峰教程笔记
- JavaScript教程_廖雪峰
- javascript学习笔记(一)-廖雪峰教程
- javascript学习——map/reduce
- 廖雪峰教程笔记补遗
- 廖雪峰Git教程笔记
- 廖雪峰 Python教程 笔记
- DNS | Array | Object | Map | Set | iterable ---[廖雪峰老师js教程笔记]
- 廖雪峰Python教程阅读笔记——1. Python基础介绍
- 廖雪峰Python教程阅读笔记——2. Python函数
- C#连接数据库,实现从数据库中取值并判断其大小(实现插入一条销售记录并更新库存的相应的内容)
- Dijkstra算法的实现及原理
- POJ 1696 Space Ant(极角排序)
- javascript 高级自动化构建工具Gulp
- 通过高通平台简单总结的权限问题
- 廖雪峰JavaScript教程笔记——map/reduce
- FPGA综合工具中可综合的代码结构
- 联想小新510s安装mac OS X 10.11经验分享
- 小程序Java多次请求Session不变
- 应用密码学-1
- FTP常用命令
- 导入环信easaUI3.3.2历险记
- python简单读取excel文件
- jsp如何禁止使用session