gpt4 book ai didi

javascript - 切片数组并从 RTL/LTR 转换

转载 作者:行者123 更新时间:2023-11-29 18:38:24 28 4
gpt4 key购买 nike

我有一个元素数组,长度会改变,但它总是可以被 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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com