【发布时间】:2020-05-17 01:27:27
【问题描述】:
我有一个数组,我想将它移动 n 次并返回一个新的移动数组数组。
如[1,2,3,4]变成
[[ 1, 2, 3, 4 ],
[ 2, 3, 4, 1 ],
[ 3, 4, 1, 2 ],
[ 4, 1, 2, 3 ],
[ 1, 2, 3, 4 ],
[ 2, 3, 4, 1 ],
...
使用
function dataShift(len, inp){
var row = inp;
var rows = [];
for (var i=0;i<len;i++) {
row.push(row.shift());
rows.push(row);
console.log(rows[i]);
}
return rows;
}
console.log(dataShift(5,[1,2,3,4]));
console.log(rows[i]) 将打印所需的结果,但 console.log(dataShift(5,[1,2,3,4])) 仅包含原始数组 len 次的最后一个排列。
我怎样才能达到我想要的结果?
【问题讨论】:
-
你必须创建一个新数组,而不是总是追加同一个。
-
您的算法并没有达到您的预期,它只是将数组的元素放入另一个数组中,不执行任何排列。
-
rows.push(row.slice()); -
我现在明白了。使用 inp.slice()。谢谢!
标签: javascript arrays node.js