我正在解析一个 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);
(在for循环中)
或者试试这个:
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
。
关于javascript - 数组不在 for 循环中存储值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25067346/