js刚入门,请教一下。 ruby的inject的原型如下: [1, 2, 3, 4].inject(0) { |result, element| result + element } # => 10
[1, 2, 3, 4].reduce(function (sum, item) {
return sum + item
});
如果在node中,因为是使用es5规范,增加了几个函数编程的api 可以使用arr.reduce方法 我这里写了一个兼容前后端js的(ie6,7,8不支持es5)方法
var xx = { reduce: ( function ( arr ) { return (function () { if ( arr.reduce ) { return function ( _arr, _callback, _initial ) { return arr.reduce.call( _arr, _callback, _initial ); } } else { return function ( _arr, _callback, _initia ) { var initial = initial || 0; for ( var i = 0; i < arr.length; i++ ) { initial = callback( initial, arr[i] ); } return initial; } } })(); } )( Array.prototype ) }