数组没有在for循环中存储值
Array not storing values in for loop
我正在解析一个json对象并将我想要的值存储在数组中,然后我将每个数组推入for循环中的第二个数组中以创建一个数组,其中a2
中的每个元素都是a1
。
我已经正确地获取和解析json。
var a1 = [];
var a2 = [];
for(i = 0; i < json.results.query.length; i++) {
var date = json.results.query[i].Date;
var name = json.results.query[i].Name;
a1[0] = date;
a1[1] = name;
console.log(a1);
a2.push(a1);
}
console.log(a2);
console.log(a1)
打印正确的数组,它在for循环的每次迭代中都会改变。例如:
["2014-01-01", "John"]
["2014-01-02", "Ann"]
["2014-01-03", "Mike"]
但是console.log(a2)
打印a2
数组,其中包含每个索引的最后一个a1
值:
[["2014-01-03", "Mike"],
["2014-01-03", "Mike"],
["2014-01-03", "Mike"]]
我还尝试将a1
分配给for循环内的a2
的每个索引,而不是使用.push()
,例如:
a2[i] = a1;
我想要嵌套(或二维)数组,但为什么每个元素都是相同的?
这是怎么回事?有javascript的作用域规则吗?这在其他语言中也适用。谢谢!
我认为你需要a2.push(a1);
而不是a2.push(a2);
(in for-loop)
或者试试这个:
for(i = 0; i < json.results.query.length; i++) {
var date = json.results.query[i].Date;
var name = json.results.query[i].Name;
a2.push([date, name]);
}
注意:在第一种方法中,你应该在for循环中声明a1
,而不是在它的顶部。
每次循环时,修改a1
引用的现有数组,然后将对它的引用推入a2
引用的数组。
这意味着你最终会有对同一个数组的多个引用。
你需要创建一个新的数组来推送每组数据。
将var a1 = [];
移动到循环中
a1是数组对象的引用,而for循环一直在更改对象的值。
你需要先将a1的值复制到某个变量中,然后将该变量压入到a2中。
试题:
var a1 = [];
var a2 = [];
function pushToA2(a){
a2.push(a);
}
for(i = 0; i < json.results.query.length; i++) {
var date = json.results.query[i].Date;
var name = json.results.query[i].Name;
a1[0] = date;
a1[1] = name;
pushToA2(a1);
}
相关文章:
- 如何将while循环中生成的值存储到变量中,以便以后在JQuery中使用
- 将循环中派生的值存储在javascript中
- for 循环和 if 语句,获取变量并存储它
- 尝试将对象添加到存储阵列中,然后通过循环将它们写出
- 如何改进此会话存储命名系统/for循环
- 如何在循环jQuery中的数组中存储数据
- 循环POS={{k}}k的iMacros没有持有整数值/存储问题
- 我如何在AJAX中循环数据并在其中存储特定值's各自的tr td
- php循环并存储到数组中
- javascript存储循环结果
- 循环访问本地存储中的 json 列表
- 在 laravel 4 上使用循环将数据数组存储到单个数组中
- 等到元素存在,循环,然后存储在变量中
- 如何按顺序循环访问数组,其中序列存储为另一个数组
- Js for 循环来存储值
- 如何将 for 循环的每次迭代的结果存储到数组中 (Javascript)
- 带有本地存储变量的 jQuery 循环不起作用
- S3 循环访问存储桶/文件夹/文件
- 本地存储循环删除 2 条记录后缺少记录(在不同的页面上)
- 存储循环's在localStorage中的值