【问题标题】:How to split array into three arrays by index? [closed]如何按索引将数组拆分为三个数组? [关闭]
【发布时间】:2020-06-10 13:04:40
【问题描述】:

我有一个包含 9 个元素的数组(可能更多)。 我需要按索引拆分成三个数组。

const array = [{id: 0}, {id: 1}, ..., {id: 8}];

我想收到 3 个这样的数组:

const array0 = [{id: 0}, {id: 3}, {id: 6}];
const array1 = [{id: 1}, {id: 4}, {id: 7}];
const array2 = [{id: 2}, {id: 5}, {id: 8}];

【问题讨论】:

  • 拆分背后的实际逻辑是什么?你试过什么?
  • 如果元素超过 9 个,你想发生什么?
  • const array0, const array1 等,不适合您的 (maybe more) 部分,您可能需要一个数组数组。

标签: javascript algorithm split


【解决方案1】:

您可以使用余数运算符%filter() 数组。对于array1,检查id % 3 === 0id % 3 === 1id % 3 === 2 是否分别用于下一个

const array = Array(9).fill().map((x, i) => ({id: i}));

const array1 = array.filter(x => x.id % 3 === 0);
const array2 = array.filter(x => x.id % 3 === 1);
const array3 = array.filter(x => x.id % 3 === 2);

console.log('array1', array1)
console.log('array2', array2)
console.log('array3', array3)

【讨论】:

    【解决方案2】:

    您可以将索引的剩余部分取为三个,并为每三个元素寻址一次 dame 组。

    如有需要请拍destructuring assignment,点赞

    [array0, array1, array2] = result;
    

    const
        array = [{ id: 0 }, { id: 1 }, { id: 2 }, { id: 3 }, { id: 4 }, { id: 5 }, { id: 6 }, { id: 7 }, { id: 8 }],
        result = array.reduce((r, o, i) => ((r[i % 3] = r[i % 3] || []).push(o), r), []);
    
    console.log(result);
    .as-console-wrapper { max-height: 100% !important; top: 0; }

    【讨论】:

      猜你喜欢
      • 2012-09-06
      • 1970-01-01
      • 1970-01-01
      • 2021-05-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-22
      • 2020-06-09
      相关资源
      最近更新 更多