我有一个元素数组,长度发生变化,但它总是可以被 8 整除(8,16,24,32,40,48...等)。
我试图切掉前 8 个元素,然后返回它们。 然后切掉接下来的8个元素并反向返回。
重复直到数组为空(RTL、LTR、RTL..等)。
我不确定如何迭代和跟踪。
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()
创建一个长度为 Math.ceil(elements.length/8)
的新数组。在回调中,获取当前索引,并从 elements
数组中获取切片。如果 i % 2
为 0,则返回切片,但如果它是奇数索引,则返回切片的反转:
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'))
关于javascript - 切片数组并从 RTL/LTR 转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59012831/