我有一个元素数组,长度发生变化,但始终可以除以8(8,16,24,32,40,48..etc)。
我正在尝试分割前8个元素,并返回它们。然后切下接下来的8个元素,然后反向返回它们。
并重复直到数组为空(RTL然后LTR然后RTL..etc)。
我不确定如何迭代和跟踪。
const print = (value) => document.write(value);
rtl = true
elements = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24]
const sliceArr = (arr, cnt) => {
arr = arr.slice(0,cnt)
if(rtl) return arr
else {
rtl = !rtl; // toggle rtl
}
}
tmpArray = []
tmpArray = sliceArr(elements, 8)
print(tmpArray)
所需的输出
1,2,3,4,5,6,7,8
16,15,14,13,12,11,10,9
17,18,19,20,21,22,23,24
有人可以指出正确的方向吗?
谢谢!
您可以使用Array.from()
创建一个长度为Array.from()
的新数组。在回调中,获取当前索引,并从Math.ceil(elements.length / 8)
数组中获取切片。如果elements
为0,则返回切片,但如果它是奇数索引,则返回切片的反面:
i % 2
您可以切片数组并检查方向。
const elements = [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24]
const result = Array.from({ length: Math.ceil(elements.length / 8) }, (_, i) => {
const arr = elements.slice(i * 8, (i + 1) * 8)
return i % 2 ? arr.reverse() : arr
})
console.log(result.join('\n'))