gpt4 book ai didi

Javascript 数组扩展方法在 for 循环中被迭代

转载 作者:搜寻专家 更新时间:2023-11-01 05:02:27 25 4
gpt4 key购买 nike

我已经为数组对象创建了一个 JavaScript 扩展,如下所示:

Array.prototype.where = function (lamda) {
var results = [];

for (var i in this) {
if (lamda(this[i])) {
results.push(this[i]);
}
}

return results;
}

当我使用 for 循环遍历数组时:

var myArray = [1,2,3,4];

for(var i in myArray){
alert(myArray[i]);
}

...我的扩展也被枚举了。

有什么想法吗?

最佳答案

此行为是设计使然。
for/in 循环迭代对象中的每个属性,包括从原型(prototype)继承的属性。

您可以检查 if (myArray.hasOwnProperty(i)) 以跳过继承的属性。

但是,您应该改用常规的 for 循环。
Javascript 的 for/in 循环不是为了遍历数组。

关于Javascript 数组扩展方法在 for 循环中被迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6942048/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com