【问题标题】:Array Split in JavaScript [closed]JavaScript中的数组拆分[关闭]
【发布时间】:2022-01-19 12:48:37
【问题描述】:

我有一个 JavaScript 数组如下

let tasks =[
     {id:1,level:1},
     {id:1,level:2},
     {id:1,level:3},
     {id:2,level:1},
     {id:2,level:2},
     {id:3,level:1}]

我想把这个数组拆分成

let tasks =[
         [{id:1,level:1},
          {id:1,level:2},
          {id:1,level:3}],

         [{id:2,level:1},
          {id:2,level:2}],

         [{id:3,level:1}] ]

如何做到这一点?

【问题讨论】:

标签: javascript arrays


【解决方案1】:

您可以使用reduce 助手来做到这一点,如下所示:

const tasks =[
     {id:1,level:1},
     {id:1,level:2},
     {id:1,level:3},
     {id:2,level:1},
     {id:2,level:2},
     {id:3,level:1}];

const newTasks = tasks.reduce((acc, data)=> {
    const target = acc.find(subArr => subArr.find(item => item.id == data.id));
    target ? target.push(data) : acc.push([data]);
    return acc;
} , []);

console.log(newTasks)

【讨论】:

  • 对于用户没有进行任何有效尝试以获得结果的问题,请尽量避免使用分析器。
  • 虽然,_.groupBy 与使用 LoDash 一样有效。另外,我在对该问题的评论中建议的格式在传递数据方面会更有用
【解决方案2】:

您可以编写一个循环来遍历此数组,将一半推送到a,另一半推送到b

a=[]; b=[];
for(int i=0;i<tasks.length;i++){
 if(i<=tasks.lenght/2){
    a.push(tasks[i]);
  }else{
    b.push(tasks[i]);
  }
}

【讨论】:

  • 这实际上并没有满足 OP 的要求,您只是将数组分成两半。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-11
  • 1970-01-01
  • 2020-06-15
  • 2017-06-05
  • 1970-01-01
  • 2014-12-22
相关资源
最近更新 更多