Javascript 修改函数中嵌套循环中的数组
我想我对JavaScript中的变量作用域有些误解。目标是,给定一个数字数组,生成一个包含该数组所有旋转的二维数组。因此,数组[1,2,3,4]应产生以下2D数组:Javascript 修改函数中嵌套循环中的数组,javascript,arrays,function,Javascript,Arrays,Function,我想我对JavaScript中的变量作用域有些误解。目标是,给定一个数字数组,生成一个包含该数组所有旋转的二维数组。因此,数组[1,2,3,4]应产生以下2D数组: [ [1,2,3,4],[2,3,4,1],[3,4,1,2],[2,3,4,1] ] 我来自Ruby,在Ruby中,以下内容可以很好地工作: row = [3,1,6,4]; function rotations(arr) { var rotations = []; var i = 0; var k = arr.l
[ [1,2,3,4],[2,3,4,1],[3,4,1,2],[2,3,4,1] ]
我来自Ruby,在Ruby中,以下内容可以很好地工作:
row = [3,1,6,4];
function rotations(arr) {
var rotations = [];
var i = 0;
var k = arr.length;
while(i < k) {
arr.unshift(arr.pop());
rotations.push(arr);
i++;
};
return rotations;
};
console.log(rotations(row));
因此,原始数组
行
似乎未在函数范围内修改-仅在嵌套的while
循环的范围内修改。您只需在使用unshift修改数组之前复制数组,因为它会修改原始数组
var行=[3,1,6,4];
功能旋转(arr){
var旋转=[arr];
var i=1;
var k=阵列长度;
var copiedArr=arr
而(i log(旋转([1,2,3,4])
在使用unshift修改数组之前,只需复制数组,因为它会修改原始数组
var行=[3,1,6,4];
功能旋转(arr){
var旋转=[arr];
var i=1;
var k=阵列长度;
var copiedArr=arr
而(i log(旋转([1,2,3,4])
非常好,这很有意义!非常感谢。太好了,这很有道理!非常感谢你。
[ [ 3, 1, 6, 4 ], [ 3, 1, 6, 4 ], [ 3, 1, 6, 4 ], [ 3, 1, 6, 4 ] ]