javascript - 如何将带分隔符的连接数组拆分成 block

标签 javascript arrays string split chunks

我有一个字符串数组

const arr = ['some', 'word', 'anotherverylongword', 'word', 'yyy', 'u']
const joined = arr.join(';')

我想获取连接字符串长度不大于 10 的 block 数组

例如输出将是:

[
    ['some;word'], // joined string length not greater than 10
    ['anotherverylongword'], // string length greater than 10, so is separated
    ['word;yyy;u'] // joined string length is 10
]

最佳答案

您可以使用 reduce (用一些 spread syntaxslice )生成这样的 block :

const arr = ['some', 'word', 'anotherverylongword', 'word', 'yyy', 'u'];
const chunkSize = 10;

const result = arr.slice(1).reduce(
  (acc, cur) =>
    acc[acc.length - 1].length + cur.length + 1 > chunkSize
      ? [...acc, cur]
      : [...acc.slice(0, -1), `${acc[acc.length - 1]};${cur}`],
  [arr[0]]
);

console.log(result);

想法是通过从 arr 的第一个元素(reduce 函数的第二个参数)开始,用 block (result) 构建数组),然后,对于 arr (arr.slice(1)) 的每个剩余元素,检查它是否可以附加到累加器(acc)。累加器最终成为 reduce 的最终返回值,分配给 result

关于javascript - 如何将带分隔符的连接数组拆分成 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60353704/

相关文章:

javascript - Leetcode 79 单词搜索(使用 JavaScript)

javascript - Node 和 Express : How to implement basic webhook server

arrays - 遍历不同大小的数组

python - 从 pandas DataFrame 中的文本中提取子字符串作为新列

javascript - 更新元素以显示 "contentEditable"元素的实时变化

javascript - 如何使用 jquery 删除一个元素和下一个元素?

PHP数组键编码?

javascript - 如何从 Javascript/Typescript 中的数组对象计算运行总计并使用 HTML 在每个实例中显示输出?

java - 如何在 IntelliJ-IDEA 中按字母顺序在运行前按字母顺序排列预写的 String[] 数组元素?

python - 分开物体并将它们成对