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

标签 javascript arrays slice

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

相关文章:

go - 删除元素方法在 Golang 中不起作用

python - 根据 python 列表中的索引删除列时避免差一错误

arrays - 对于数组中的每个数字,找到其左侧第一个较小的数字

string - 为什么空片的长度等于1?

javascript 鼠标点击错误

javascript - 在主干网中重用环回模型进行客户端验证?

c# - 如何拆分字节数组

arrays - 如何快速解析字符串数组?

Google map 信息窗口中的 Javascript - 在 IE 中不起作用

javascript - 将代码移至函数中。现在不行了。怎么了?