gpt4 book ai didi

Javascript 数组未获取正确的数据

转载 作者:行者123 更新时间:2023-11-28 02:32:36 25 4
gpt4 key购买 nike

我有一个 JavaScript if-else 语句。它从 websocket 获取数据,并根据条件 true 或 false 进入相关分支。

但我发现添加到两个数组的数据是相同的。这是代码:

    cities = JSON.parse(evt.data);
if (cities.tag == 'red'){
dataset.length = 0;
console.log(cities.tag);
for (var i = 0, item; item = buffer[i]; ++i) {
buffer[i][1][0] = cities.clusters[item[0]] || 0;
//console.log(buffer);
dataset.push(buffer[i][1][0]);
console.log('no1: ',dataset);
}
}else{
dataset2.length = 0;
console.log(cities.tag);
for (var i = 0, item; item = buffer2[i]; ++i) {
buffer2[i][1][0] = cities.clusters[item[0]] || 0;
dataset2.push(buffer2[i][1][0]);
console.log('no2: ',dataset2);
}
}
draw();

我知道它进入了正确的分支并且数据不同,但不知何故 else 分支中的代码只是复制了 if 分支中的数组。

我认为代码中一定有什么东西,但我看不到是什么。

谢谢

最佳答案

慢慢阅读代码并考虑输入:

  • 对于缓冲区中的每个 item 和 item 的索引 i:
    • buffer2[i][1][0] 设置为 cities.clusters[item[0]]0 的值如果先前的表达式未定义;

但是你看,这里已经有问题了

如果缓冲区任何给定级别的每个元素都应该是相同的类型,则 buffer2 是数组的数组的数组。

这意味着 item 是一个数组的数组,而 item[0] 是一个数组,而不是一个元素。这并不意味着该语句不会以某种方式工作,但是,除非您试图赢得某种 JavaScript 混淆竞赛,否则这不是好的代码,而且很可能不是预期的。

编辑:这确实是一种奇怪的遍历数组的方式;也许在这个宇宙中存在某种理由以这种方式迭代数组,但是如果您的数组有任何元素会以某种方式计算为 false,它甚至不会迭代所有元素。

关于Javascript 数组未获取正确的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13916968/

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