map/reduce

来源:互联网 发布:mac版chrome插件下载 编辑:程序博客网 时间:2024/05/21 00:53

  最近在学习JavaScript一些基本的至少,对于这样的动态语言,感觉还是很厉害的,代买写起来很简单,功能却很强大。
  简单介绍下最近学到的JavaScript里面的map和reduce。在JavaScript里面是有map这种对象的,而且是可以iterable的,但是这里说的map是array里面的一个方法,虽然也像是key–>value的感觉,但是并不是简单的数据的存储形式,感觉是封装的一种运算。

map

  map的基本定义:array.map(callback[, thisArg]);直接用起来:    functionpow(x) {return x * x;}    var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];    arr.map(pow); // [1, 4, 9, 16, 25, 36, 49, 64, 81]

有点基础的应该都能看明白这个函数是在干什么的,附图一张:
这里写图片描述
  在看一个例子:var result = [“1”, “2”, “3”].map(parseInt);parseInt函数的作用是将字符串转换成整数,我们期待的结果是:1,2,3。但是结果并不是,而是:1, NaN, NaN。造成这个现象的原因是我觉得有两个,一是map的定义,二是parseInt这个函数本身。map 方法会给原数组中的每个元素都按顺序调用一次 callback 函数。callback 每次执行后的返回值组合起来形成一个新数组,callback 函数会被自动传入三个参数:数组元素,元素索引,原数组本身。而这里的回调函数就是parseInt这个函数,而恰好这个函数只接受两个参数(JavaScript中允许多传递比参数定义的参数对的参数)而第二个参数就是要转换为的进制数,parseInt(“1”,0)0默认的转换时10进制,所以结果还是1,到parseInt(“2”,1)这个时候在1进制中应该是没有2的,好像也是没有1进制的(回头研究下),同理其他的也是。

reduce

定义:[x1, x2, x3, x4].reduce(f) = f(f(f(x1, x2), x3), x4);
简单的使用:
var arr = [1, 3, 5, 7, 9];
arr.reduce(function (x, y) {
return x + y;
}); // 25

不写了,下次再补充吧,勉勉强强逼着自己写的东西,感觉自己都不想看,下次再改进,不固定时间了,有时间,学到了就写,用到了就记下来。
  最近在被老板(导师)要求做动画,我也是醉醉的,等我学成归来在来写小动画制作的心得。

0 0