【发布时间】:2021-05-06 13:54:14
【问题描述】:
我正在尝试操作数组 A 以有效地获取数组 B。 “k”是一个给定的变量。我想出了下面的逻辑,但我相信应该有更好的方法。
数组的长度总是可以被k整除
This part is not the code. It doesn't let me submit it otherwise.
k=3
Given: A = [0,1,2,3,4,5,6,7,8,9,10,11]
Result: B = [9,10,11,6,7,8,3,4,5,0,1,2]
k = 4
Given: A = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]
Result: B = [12,13,14,15,8,9,10,11,4,5,6,7,0,1,2,3]
当 k 发生变化时,A 的给定元素数量发生变化。 A 的元素数始终为 k*4。如果 k 为 2,我们的 A 数组是 [0,1,2,3,4,5,6,7],B 数组(结果)应该是 B = [6,7,4,5,2,3,0 ,1]
let A = [0,1,2,3,4,5,6,7,8,9,10,11]
k = 3
let B = []
for (let i=A.length - (k-1); i >=0; i=i-k) {
if (A.length - 1 <= i + k +1) {
B = [
...B,
...(A.slice(i+1, i+k+1))
]
}
}
B = [
...B,
...(A.slice(0,k))
]
【问题讨论】:
-
也许你应该先让你的代码正常工作,然后再担心效率
-
从正确解释你的转换逻辑开始。不要只是暗示“你们去弄清楚我想要什么”来删除代码。
-
为了更好地了解您想要实现的目标,请同时发布 k=1 和 k=2 或 k=n 的预期结果
-
让人们冷静下来。我不知道为什么stackoverflow如此野蛮:)对不起,我编辑了这个问题。另外,@Jaromanda,代码按预期工作。
标签: javascript arrays ecmascript-6