模拟js数组方法map()
来源:互联网 发布:中华软件网 编辑:程序博客网 时间:2024/06/07 12:59
在js1.6中新增了的数组方法map();
这是一个神奇的方法,它是一个方法,但这个方法的具体作用是不一定的,所以还依赖一定的逻辑。例如下面;
var arr = [1,1,3,5,5]
var add = function(x,y){ return x+y;}
var squear = function(x){return x*x}
var results = arr.map(squear)
alert(results)
var sum = arr.map(add);
alert(sum);
结果为
1 1 9 25 25
1 2 5 8 9
第一个结果是很容易知道的,函数就是对数组每个元素进行二次方乘积,得到的结果;
但第二过结果有点百思不得其解了,为什么会是1 2 3 8 9 。
我们留意一下add与squear函数 除了逻辑不同外,函数传参也不同,针对add函数的形参y是什么内容呢?我们先看看下面的模拟map()例子;
var arr = [1,1,3,5,5]
var add = function(x,y){ return x+y;}
var squear = function(x){return x*x}
var map = function(a,f){
var results = [];
for(var i = 0 ,len = a.length ;i < len ; i++ )
{
if(i in a)results[i] = f.call(null,a[i],i,a);
}
return results;
}
var results = map(arr,squear)
var sum = map(arr,add)
结果显示跟上面的结果是一致的。
我们看一下红色部分的代码,null代表全局对象或者this,a[i]代表数组第i个值,i代表索引,a代表数组;
我们再来看看add函数,他是默认接收两个参数,那就是每次返回的是a[i]+i相加的结果,
于是就得出刚才那个结果。
附:map,foreach()函数接收的参数一般有三个 ,顺序是 数组元素、数组索引、数组对象。
- 模拟js数组方法map()
- js数组map方法
- JS数组的map方法
- JS模拟的Map类实现方法
- js数组forEach map filter方法
- 用 js模拟 Map
- js 模拟Map类
- js模拟Map
- js模拟Map
- JS模拟Map(2)
- JAVAScript js 模拟JAVA map类 实现put get 等JAVA map类方法
- JAVAScript js 模拟JAVA map类 实现put get 等JAVA map类方法
- js数组的迭代器方法(some、every、forEach、map、filter)
- Array数组(JS)之map与reduce方法
- js数组的迭代器方法(some、every、forEach、map、filter)
- 笔记-JS数组遍历方法之forEach()和map()
- 用js模拟的Map
- 使用JS模拟Map容器
- 关于EL表达式
- C primer plus第3章(数据和C)习题
- Java Date,long,String 日期转换
- test
- C2000系列常见问题
- 模拟js数组方法map()
- Android反射机制实现与原理
- wifi小车的制作
- 2011华为编程系列之矩阵转置
- 最全的CSS浏览器兼容问题
- 正则表达式学习--RegexBuddy工具的使用
- java版 贝塞尔曲线算法
- 6条常用的MySQL查询
- 谈程序在RAM,FLASH 和外部RAM中运行的速度