gpt4 book ai didi

javascript - 按键排序数组或 : Why is my for loop executing out of order?

转载 作者:行者123 更新时间:2023-11-29 16:24:40 26 4
gpt4 key购买 nike

我有一个对象数组,需要根据某些配置数据按一定顺序放置。我在以正确的顺序遍历数组时遇到问题。我认为如果我创建了数组,然后使用 for 循环单步执行,我将能够正确执行代码。它工作得很好,除了在一个用例中,我将第四个项目添加到数组中,然后返回到第三个。

links[0] = foo
links[1] = bar
links[2] = foobar
links[3] = a_herring
links[4] = a_shrubery

order = [] //loaded from JSON, works has the numbers 1 2 3 or 4 as values
//in this case:
order[0] = 1
order[1] = 2
order[2] = 4
order[3] = false
order[4] = 3

for(x in order){
if(order[x]){
printOrder[order[x]]=links[x]
//remember that in this case order[0] would
}

这应该给我一个如下所示的数组:

//var printOrder[undefined,foo,bar,a_shrubbery,foobar]

但是当我尝试遍历数组时:

    for(x in printOrder){
printOrder[x].link.appendChild(printOrder[x].image)
printOrder[x].appendChild(printOrder[x].link)
printOrder[x].appendChild(printOrder[x].text)
document.getElementById("myDiv").appendChild(printOrder[x]);
}

我得到 foo, bar, foobar, a_shrubbery 作为输出。

我需要按键值对该数组进行排序,或者按正确的顺序逐步执行它。

最佳答案

迭代 Array 实例的数字索引属性应始终使用数字索引来完成:

for (var x = 0; x < printOrder.length; ++x) {
// whatever with printOrder[x]
}

使用“for ... in”形式的语句不会让您获得可预测的排序,正如您所看到的,它还会产生其他奇怪的效果(特别是当您混合使用 JavaScript 框架或工具库或任何)。它用于迭代对象的属性名称,并且不会特殊对待 Array 实例。

关于javascript - 按键排序数组或 : Why is my for loop executing out of order?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7276040/

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