gpt4 book ai didi

使用 for..in 和 MooTools 的 Javascript 数组迭代

转载 作者:搜寻专家 更新时间:2023-11-01 04:49:37 24 4
gpt4 key购买 nike

我在 MooTools 中遍历一个数组,但在使用简写 for..in 循环遍历数组时看到了额外的项目。当我使用常规 for 循环时它工作正常。这是 MooTools 污染全局命名空间的问题还是我在这里做错了什么?

createTabs() 函数遍历数组并为数组中的每个值创建一个制表符:

function createTabs() {
var myTabs = [["First", "a.png"], ["Second", "b.png"]];
for(var i in myTabs) {
var tab = new Tab(myTabs[i][0], myTabs[i][1]);
console.log(i);
}
}

这是 console.log(i) 的输出:

0
1
$family
each
clean
associate
link
contains
extend
getLast
getRandom
include
combine
erase
empty
flatten
hexToRgb
rgbToHex
toJSON

我了解前 2 个索引,但其余索引从何而来?

编辑:感谢 Chetan 和 k Prime 的快速回答。这是有道理的,MooTools 添加的 Array.each 是更简洁的迭代方式!

现在看起来好多了:

myTabs.each(function(item) {
var tab = new Tab(item[0], item[1]);
console.log(item);
});

最佳答案

正如 Chetan 所指出的,for .. in 用于对象属性迭代,而不是数组。但是,您可以使用 hasOwnProprty 迭代当前成员(而不是 MooTools 设置的继承成员),如下所示:

for (i in array)
if (array.hasOwnProperty(i))
{
//.. do stuff ...
}

或者,更好的是,因为您使用的是 MooTools,只需使用 Array.each 方法:

array.each (function (item, index)
{
// ... do stuff ...
});

关于使用 for..in 和 MooTools 的 Javascript 数组迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2040042/

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