码迷,mamicode.com
首页 > Web开发 > 详细

js map, reduce, forEach, filter的一般实现

时间:2015-08-01 23:36:46      阅读:210      评论:0      收藏:0      [点我收藏+]

标签:map   reduce   foreach   filter   高阶函数   

js map, reduce, forEach, filter的一般实现

map(映射), reduce(规约), forEach(遍历), filter(过滤),它们都是高阶函数,都是以传入不同的函数来以不同的方式操作数组元。

1> map

function map(array, func) {
  var res = [];
  for (var i = 0, len = array.length; i < len; i++) {
    res.push(func(array[i]));
  }
  return res;
}
var res = map([1, 2, 3], function(n){
  return n + 3;
});
console.log(res);// [4, 5, 6]

2>reduce

function reduce(array, func, initialValue){
  var result = initialValue;
  for(var i = 0, len = array.length; i < len; i++){
    result = func.apply(null, [result].concat(array[i]));
  }
  return result;
}
var res = reduce([1, 2, 3], function(previousValue, currentValue){
  return previousValue + currentValue;
}, 0);
console.log(res);// 6


3>forEach

function forEach(array, func){
  for (var i = 0, len = array.length; i < len; i++) {
    func(array[i]);
  }
}
forEach([1, 2, 3], function(n){
  console.log(n);// 1 \n 2 \n 3
});

4>filter

function filter(array, func){
  var res = [];
  for(var i = 0, len = array.length; i < len; i++){
    if(typeof func(array[i]) !== 'undefined'){
      res.push(array[i]);
    }
  }
  return res;
}
var res = filter([1, 2, 3], function(n){
  if(n % 2 == 1){
    return n;
  }
});
console.log(res);// [1, 3]



版权声明:本文为博主原创文章,未经博主允许不得转载。

js map, reduce, forEach, filter的一般实现

标签:map   reduce   foreach   filter   高阶函数   

原文地址:http://blog.csdn.net/u011700203/article/details/47191893

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!