Javascript 将元素添加到..的数组内部。。在里面
我试图用json数据创建一个二维数组。第一个数组在for-in循环中生成,之后被推送到顶级数组。我试图打印数组,每个元素的值都相同,这是json中的最后一个数据 json: 代码:Javascript 将元素添加到..的数组内部。。在里面,javascript,arrays,json,Javascript,Arrays,Json,我试图用json数据创建一个二维数组。第一个数组在for-in循环中生成,之后被推送到顶级数组。我试图打印数组,每个元素的值都相同,这是json中的最后一个数据 json: 代码: 将“var top=[]”放在循环内并更改数组。将(top)推到数组。取消移位(top),取消移位方法始终将元素插入索引0。这是因为您在循环范围外初始化top,这使得top[0]覆盖对top数组的所有引用,在数组中保存的 将top声明放在循环中,查看差异 var current = json[0].dateMarke
将“var top=[]”放在循环内并更改
数组。将(top)
推到数组。取消移位(top)
,取消移位方法始终将元素插入索引0。这是因为您在循环范围外初始化top
,这使得top[0]
覆盖对top
数组的所有引用,在数组中保存的
将top
声明放在循环中,查看差异
var current = json[0].dateMarketHash;
var array = [];
for(var key in current){
var top = [];
top[0] = current[key].formattedDate;
top[1] = current[key].currency;
top[2] = current[key].price;
array[array.length] = top;
}
如果您坚持top在循环范围之外,您可以通过克隆top
数组来解决此问题
var current = json[0].dateMarketHash;
var array = [];
var top = [];
for(var key in current){
top[0] = current[key].formattedDate;
top[1] = current[key].currency;
top[2] = current[key].price;
array[array.length] = top.slice(0);
}
你忘了:“我遇到的问题是……”@beautifulcoder问题就在最后一个代码块的注释中。如果每次都更改top的值,你应该每次都创建一个新的top即使我在循环中放置“var top=[]”,它将打印相同的副本——将top
和key
放在它们自己的内部closure@DanielJohnGomez它打印正确的值,你看到小提琴了吗?对不起,也许我只是复制了错误的代码。。谢谢
var current = json[0].dateMarketHash;
var array = [];
for(var key in current){
var top = [];
top[0] = current[key].formattedDate;
top[1] = current[key].currency;
top[2] = current[key].price;
array[array.length] = top;
}
var current = json[0].dateMarketHash;
var array = [];
var top = [];
for(var key in current){
top[0] = current[key].formattedDate;
top[1] = current[key].currency;
top[2] = current[key].price;
array[array.length] = top.slice(0);
}