Javascript 数组无法';更新';没有深度拷贝
我今天正在使用阵列,现在已经筋疲力尽(轻描淡写)。出于某种原因,我的数组“无法更新”(因为缺少更好的词)——或者至少在我的控制台窗口中是这样 让阵列“更新”的唯一方法是在执行进一步操作之前对其进行“深度复制”,如:Javascript 数组无法';更新';没有深度拷贝,javascript,arrays,json,Javascript,Arrays,Json,我今天正在使用阵列,现在已经筋疲力尽(轻描淡写)。出于某种原因,我的数组“无法更新”(因为缺少更好的词)——或者至少在我的控制台窗口中是这样 让阵列“更新”的唯一方法是在执行进一步操作之前对其进行“深度复制”,如: graphArray = JSON.parse(JSON.stringify(graphArray)); //supply plugIt = graphArray['supplyDemand']['supply'][ind]; graphArray['supplyDemand'][
graphArray = JSON.parse(JSON.stringify(graphArray));
//supply
plugIt = graphArray['supplyDemand']['supply'][ind];
graphArray['supplyDemand']['supply'][ind] = parseInt(plugIt) + parseInt(total);
graphArray = JSON.parse(JSON.stringify(graphArray));
//cardiology
plugIt = graphArray['supplyDemand']['cardiology'][ind];
graphArray['supplyDemand']['cardiology'][ind] = parseInt(plugIt) + val.cardiology ;
graphArray = JSON.parse(JSON.stringify(graphArray));
//elderly care
plugIt = graphArray['supplyDemand']['elderly care'][ind];
graphArray['supplyDemand']['elderly care'][ind] = parseInt(plugIt) + val['elderly care'];
graphArray = JSON.parse(JSON.stringify(graphArray));
我能让以下代码“工作”(即“更新”其值)的唯一方法是在每个步骤之间深度复制数组,如下所示:
graphArray = JSON.parse(JSON.stringify(graphArray));
//supply
plugIt = graphArray['supplyDemand']['supply'][ind];
graphArray['supplyDemand']['supply'][ind] = parseInt(plugIt) + parseInt(total);
graphArray = JSON.parse(JSON.stringify(graphArray));
//cardiology
plugIt = graphArray['supplyDemand']['cardiology'][ind];
graphArray['supplyDemand']['cardiology'][ind] = parseInt(plugIt) + val.cardiology ;
graphArray = JSON.parse(JSON.stringify(graphArray));
//elderly care
plugIt = graphArray['supplyDemand']['elderly care'][ind];
graphArray['supplyDemand']['elderly care'][ind] = parseInt(plugIt) + val['elderly care'];
graphArray = JSON.parse(JSON.stringify(graphArray));
谁能告诉我这里发生了什么事吗?嗯?“更新”代码在哪里?正在创建的阵列在哪里?它来自哪里?数组是否存在于该范围内?
console.log(graphArray)
显示什么?plugIt
和total
有什么?为什么parseInt
没有基数10?哪里是ind
?什么事件正在使用“数组”(实际上,它是一个对象,而不是数组)?据我所知,JSON.parse(JSON.stringify(graphArray))应该是原始的graphArray@bwright对。如果之前它“不更新”,那么在获取它的最后一个版本后它怎么会“更新”呢?我认为在我的控制台窗口中,最关键的是:登录到控制台的对象可能包含错误的值,因为它是异步的,当您在控制台中展开对象并显示当前状态时,浏览器会获取值,而不是日志记录时的状态。尝试使用console.log(JSON.stringify(graphArray))
看看它是否有用。或者,尝试使用setTimeout
看看它是否在50毫秒后得到更新。