您的位置:首页 > Web前端 > JavaScript

实现javascript中的filter,map,reduce

2013-06-03 22:11 316 查看
先来实现一个遍历Array的forEach函数:

function foreach(array, func) {
for (var i = 0; i < array.length; i++) {
func(array[i]);
}
}

function logPrint(element) {
console.log(element);
}

forEach([2, 5, 7], logPrint);
//outputs:
//2
//5
//7


filter:

function filter(func, array) {
var result = [];

forEach(array, function(element){
if (func(element)) {
result.push(element);
}
});

return result;
}

function gtZero(element) {
if (x > 0) {
return true;
}
}

filter(gtZero, [3, -2, 0, 5]);
//[3, 5]


  map:

function map(func, array) {
var result = [];

forEach(array, function(element) {
result.push(func(element));
});

return result;
}

function add1(element) {
return element+ 1;
}

map(add1, [0, 2, 4, 6, 8, 10]);
//[1, 3, 5, 7, 9, 11]


  reduce:

function reduce(func, init, array) {
forEach(array, function(element) {
init = func(init, element);
});

return init;
}

function add(element1, element2) {
return element1 + element2;
}

reduce(add, 0, [1, 2, 3, 4]);
//10


在ECMAScript5的Array中已经有了Array.prototype.forEach,Array.prototype.filter,Array.prototype.map等方法,

请参考http://www.ecma-international.org/ecma-262/5.1/#sec-15.4
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: