实现 map
Array.prototype.map = function (fn, context = this) {
if (typeof fn !== 'function') {
throw new TypeError(fn + 'is not a function')
}
const arr = this
const result = new Array(ary.length);
for (let i = 0; i < arr.length; i++) {
// fix稀疏数组的情况
if (i in arr) {
result[i] = fn.call(context, arr[i], i, arr);
}
}
return result
}
使用 reduce 来实现 map
Array.prototype.map = function(fn, context = this){
if (typeof fn !== 'function') {
throw new TypeError(fn + 'is not a function');
}
return this.reduce((acc, value, index) => {
// fix稀疏数组的情况
if (index in list) {
acc[index] = fn.call(context, value, index, this);
}
return acc;
}, []); // 注意这里的[]不能省
}
最后更新于