【问题标题】:Splitting an array into 3 unequal arrays in JavaScript在 JavaScript 中将数组拆分为 3 个不相等的数组
【发布时间】:2022-11-12 22:16:58
【问题描述】:

假设我有一个数组

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]

我想将它拆分为 3,两个数组包含原始数组的第一个和最后一个 X 元素,第三个数组包含剩余元素,如下所示:

#1 - [0, 1, 2]
#2 - [3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
#3 - [13, 14, 15]

有没有更短/更好的方法来代替:

const splitBy = 3;
const originalArray = Array.from(Array(16).keys());
const result = [
  originalArray.slice(0, splitBy),
  originalArray.slice(splitBy, -splitBy),
  originalArray.slice(-splitBy),
];

console.log(result)

【问题讨论】:

  • 如果它总是分成 3 个数组,那么我想这很好
  • 无需复制数组并使用它。 slice 每次都返回一个新的元素数组。

标签: javascript arrays


【解决方案1】:

“更好”是主观的......但是,如果您不止一次需要它,则可以选择通用函数:

function multiSlice(a, ...slices) {
    let res = [], i = 0

    for (let s of slices) {
        res.push(a.slice(i, s))
        i = s
    }

    res.push(a.slice(i))
    return res
}

// for example,

const originalArray = Array.from(Array(16).keys());

console.log(multiSlice(originalArray, 3, -3))
console.log(multiSlice(originalArray, 2, 5, 10, 12))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-13
    • 2012-04-12
    • 1970-01-01
    • 1970-01-01
    • 2017-04-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多