【问题标题】:Split array into a chunk and then remove the chunk from the original array将数组拆分为一个块,然后从原始数组中删除该块
【发布时间】:2021-10-16 18:21:43
【问题描述】:

这是我拥有的数据类型:

["2", "Something1", "Something2", "4", "Something3", "Something4", "Something5", "Something6", "2", "Something7", "Something8"]

数字表示块应该有多大。

const splitInput = (input: string[]) => {
  const chunks: string[][] = [];

  input.forEach((element) => {
    if (element.length === 1) {
      const chunk = input.splice(input.indexOf(element) + 1, parseInt(element));
      console.log(chunk);
      chunks.push(chunk)
    }
  });

上面的代码只在没有相同数字之前有效,因为 indexOf 会找到第一个出现的位置。如何正确计算indexOf()fromIndex 或从数组中删除所有已删除的元素(包括数字)?

这将是预期的输出

[ ["Something1", "Something2"], ["Something3","Something4","Something5","Something6"],["Something7", "Something8"] ]

在任何人问之前,是的,这是我作业的一部分(不是全部,这只是一个开始,我将不得不对这些部分做一些事情)。在过去的 2 个小时里,我一直在尝试一切,但无法弄清楚。

【问题讨论】:

    标签: javascript logic


    【解决方案1】:

    我不知道如何解决您的方法,但另一种方法是迭代块大小并用块填充另一个数组:

    function splitInput(elements) {
        const result = [];
        for (let i = 0, end = elements.length; i < end; i += 1 + +elements[i]) {
            result.push(elements.slice(i + 1, i + 1 + +elements[i]));
        }
        return result;
    }
    
    const elements = ["2", "Something1", "Something2", "4", "Something3", "Something4", "Something5", "Something6", "2", "Something7", "Something8"];
    
    console.log(splitInput(elements));

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-11-09
      • 1970-01-01
      • 2022-01-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多