知食记
搜索文档…
实现 map
1
Array.prototype.map = function (fn, context = this) {
2
if (typeof fn !== 'function') {
3
throw new TypeError(fn + 'is not a function')
4
}
5
const arr = this
6
const result = new Array(ary.length);
7
8
for (let i = 0; i < arr.length; i++) {
9
// fix稀疏数组的情况
10
if (i in arr) {
11
result[i] = fn.call(context, arr[i], i, arr);
12
}
13
}
14
return result
15
}
Copied!
使用 reduce 来实现 map
1
Array.prototype.map = function(fn, context = this){
2
if (typeof fn !== 'function') {
3
throw new TypeError(fn + 'is not a function');
4
}
5
return this.reduce((acc, value, index) => {
6
// fix稀疏数组的情况
7
if (index in list) {
8
acc[index] = fn.call(context, value, index, this);
9
}
10
return acc;
11
}, []); // 注意这里的[]不能省
12
}
Copied!
复制链接