- 此问题在此处已有答案**:
Why is using "for...in" for array iteration a bad idea?(28个答案)
How to define method in javascript on Array.prototype and Object.prototype so that it doesn't appear in for in loop(4个答案)
2小时前关闭.
Array.prototype.myMap = function(callback) {
const newArray = [];
// Only change code below this line
for(let i in this){
newArray.push(callback(this[i], i, this))
}
// Only change code above this line
return newArray;
};
console.log([1, 2, 3, 4, 5].myMap(item => item * 2))
type here
结果显示为[ 2, 4, 6, 8, 10, NaN ]
我就料到结果会是这样:[ 2, 4, 6, 8, 10 ]
有谁能解释一下为什么在循环中使用for时arr的末尾会出现null
- 我知道这适用于普通的for循环,但我只想知道为什么会出现这个问题**
1条答案
按热度按时间lx0bsm1f1#
for...in
循环也正在查找myMap
属性。请执行Object.hasOwn
检查,使用{enumerable: false}
定义该属性,或者不使用for...in
进行循环。使用
Array#entries
循环元素沿着索引:正在检查自己的属性:
使用
{enumerable: false}
定义myMap
: