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' ] ]
*/
配列内に配列があります。最初の配列を逆にする必要があります。私はr[0].reverse()
がこれを行うと思ったが、代わりには逆すべての配列を逆転させた。配列の配列を逆にする配列内のすべての配列を逆にする
これはなぜ起こるのか誰かが説明できますか?
効果がreverse' 'にローカライズされていません。あなたは 'r [0] [3] =" d "'を実行することができ、同様に "all arrays"を一度に変更します。それは実際には1つの配列です。 – 4castle
オブジェクトはJSの参照型です。配列を複製する必要があります。 – Redu