实现 reduce foreach
reduce
js
const arr = [1, 2, 3, 4, 5];
const sum = arr.reduce((prev, next) => {
return prev + next;
}, 0);
// console.log(sum);
Array.prototype._reduce = function (fn, before) {
const arr = this;
let prev = before;
for (var i = 0; i < arr.length; i++) {
prev = fn(prev, arr[i]);
}
return prev;
};
const mySum = arr._reduce((prev, next) => {
return prev + next;
}, 0);
console.log(mySum);
forEach
js
const arr = [1, 2, 3, 4, 5];
Array.prototype._forEach = function (fn) {
const arr = this;
for (var i = 0; i < arr.length; i++) {
fn(arr[i], i);
}
};
arr._forEach((item, index) => {
console.log(item);
});
forEach与for循环,谁的性能更好
forEach 不是普通的 for 语法糖,还有诸多参数和上下文需要在执行的时候考虑进来,这里可能拖慢性能;
在1000万级以上的量级上 , forEach 的性能远远低于for的性能 for: 8.422ms forEach: 30.328m
js
let arrs = new Array(100000);
console.time('for');
for (let i = 0; i < arrs.length; i++) {
};
console.timeEnd('for');
console.time('forEach');
arrs.forEach((arr) => {
});
console.timeEnd('forEach');
for: 2.263ms
forEach: 0.254ms