Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将元素添加到..的数组内部。。在里面_Javascript_Arrays_Json - Fatal编程技术网

Javascript 将元素添加到..的数组内部。。在里面

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

我试图用json数据创建一个二维数组。第一个数组在for-in循环中生成,之后被推送到顶级数组。我试图打印数组,每个元素的值都相同,这是json中的最后一个数据

json:

代码:


将“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);
}