gpt4 book ai didi

javascript for循环随机返回

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

我有这个小代码源

for (i = 0; i < elements.length; i++) {
console.log(i);
(function (i) {
if (elements[i]["id"] == id) {
index = i;
console.log(i);
}
})(i);
}

console.log(index);

我想找到一个数组的元素索引,其中子元素“id”= id;但它有时会返回 0 和 1。此代码位于类内的函数内。我两次调用同一个函数,但在类外使用不同的参数,所以首先它必须显示 0 而不是 1,但有时它显示 1 而不是 0。你能帮我吗?我也试过这个方法,但它不起作用。

var i = 0;
while (i < elements.length) {
console.log(elements[i]["id"]);
if (elements[i]["id"] == id) {
index = i;
break;
} else if (elements[i]["id"] != id) {
i++;
}
}

console.log(index);

Here is my test page , 如果您使用 Chrome 打开它(有时会发生,但在 Firefox 中通常会发生),您会看到有时会出现小图像,但有时会在您按下按钮时消失。您还可以在“inspect elements -> console”中看到控制台输出

编辑

我更改了我的代码以便像这样更好地调试(正如 Lando 所建议的):

for (i in elements){
console.log("comparing elements['"+ i +"']['id']: "+ elements[i]["id"] +" with id:' "+ id + "'");
if(elements[i]["id"] == id){
index = i;
}
}

console.log(index);

得到控制台输出:

comparing elements['0']['id']: id2 with id:' id1' Slideshow.js:140
comparing elements['1']['id']: id1 with id:' id1' Slideshow.js:140
1 Slideshow.js:147
comparing elements['0']['id']: id2 with id:' id2' Slideshow.js:140
comparing elements['1']['id']: id1 with id:' id2' Slideshow.js:140
0

什么时候应该:

comparing elements['0']['id']: id1 with id:' id1' Slideshow.js:140
comparing elements['1']['id']: id2 with id:' id1' Slideshow.js:140
0 Slideshow.js:147
comparing elements['0']['id']: id1 with id:' id2' Slideshow.js:140
comparing elements['1']['id']: id2 with id:' id2' Slideshow.js:140
1

编辑 2

在看到输出后发现数组“elements”中的对象改变了位置,elements[0]["id"] 变成了 "id2" 它应该在哪里be "id1" 我仍然不能明确地说出为什么会发生这种情况或如何解决它。如果您有任何想法,请分享。

Here is my JSfiddle link

最佳答案

我认为你必须将你的代码改成这样,没有内部函数(闭包)(第一个 console.log 将帮助你调试你的代码(或者你可以只使用 firebug 并在该行设置一个断点)

for (i in elements){
console.log("comparing elements['"+ i +"']['id']: "+ elements[i]["id"] +" with id:'"+ id + "'");
if(elements[i]["id"] == id){
index = i;
console.log(i);
}
}

console.log(index);

请记住,javascript 数组不一定是从零开始的,甚至不一定是顺序的,因此“for in”将帮助您避免可能的错误。我删除了闭包,因为我认为在这种情况下您实际上不需要它。

关于javascript for循环随机返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12249707/

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