Sun*_*Sun 1 javascript arrays reverse
var alph = ["a", "b", "c"];
var r = [];
for(var i = 0; i < 5; i += 1) {
r.push(alph);
}
r[0].reverse();
console.log(r);
/* Output
[ [ 'c', 'b', 'a' ],
[ 'c', 'b', 'a' ],
[ 'c', 'b', 'a' ],
[ 'c', 'b', 'a' ],
[ 'c', 'b', 'a' ] ]
*/
/* Expected output
[ [ 'c', 'b', 'a' ],
[ 'a', 'b', 'c' ],
[ 'a', 'b', 'c' ],
[ 'a', 'b', 'c' ],
[ 'a', 'b', 'c' ] ]
*/
Run Code Online (Sandbox Code Playgroud)
数组中有数组.第一个数组应该颠倒过来.我以为r[0].reverse()会这样做,但是这会反转 所有数组.
有人可以解释为什么会这样吗?
你正在推动数组的引用,所以更新一个将对其余的进行更改,因为它们都是指单个数组.而是推送原始数组的副本以复制数组使用Array#slice方法.
var alph = ["a", "b", "c"];
var r = [];
for (var i = 0; i < 5; i += 1) {
// push the exact copy of original array
r.push(alph.slice());
}
r[0].reverse();
console.log(r);Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
104 次 |
| 最近记录: |