首页 > 解决方案 > Javascript - 在每个第 4 个元素之后将对象数组拆分为多个数组

问题描述

我有一个这样的数组

const events = [
    {id: "1", title: "Javascript Workshop", description: "", location_id: "1"},
    {id: "2", title: "Vue Workshop", description: "", location_id: "2"},
    {id: "3", title: "PHP Workshop", description: "", location_id: "3"},
    {id: "4", title: "Python Workshop", description: "", location_id: "4"},
    {id: "5", title: "C++ Workshop", description: "", location_id: "5"},
    {id: "6", title: "C++ Workshop", description: "", location_id: "5"},
    {id: "7", title: "C# Workshop", description: "", location_id: "1"},
    {id: "8", title: "C# Workshop", description: "", location_id: "1"},
    {id: "9", title: "C# Workshop", description: "", location_id: "1"},
    {id: "10", title: "C# Workshop", description: "", location_id: "1"},
    {id: "11", title: "C# Workshop", description: "", location_id: "1"},
    {id: "12", title: "C# Workshop", description: "", location_id: "1"},
]

我想将每个第 4 个元素拆分为一个单独的数组。结构应如下所示:

const multiEvents = [
    [
        {id: "1", title: "Javascript Workshop", description: "", location_id: "1"},
        {id: "2", title: "Vue Workshop", description: "", location_id: "2"},
        {id: "3", title: "PHP Workshop", description: "", location_id: "3"},
        {id: "4", title: "Python Workshop", description: "", location_id: "4"}
    ],
    [
        {id: "5", title: "C++ Workshop", description: "", location_id: "5"},
        {id: "6", title: "C++ Workshop", description: "", location_id: "5"},
        {id: "7", title: "C# Workshop", description: "", location_id: "1"},
        {id: "8", title: "C# Workshop", description: "", location_id: "1"}
    ],
    [
        {id: "9", title: "C# Workshop", description: "", location_id: "1"},
        {id: "10", title: "C# Workshop", description: "", location_id: "1"},
        {id: "11", title: "C# Workshop", description: "", location_id: "1"},
        {id: "12", title: "C# Workshop", description: "", location_id: "1"}
    ],
]

我怎么做?

标签: javascript

解决方案


使用减少:

const chunk = (arr, chunkSize) => arr.reduce((result, item, itemIndex) => {
  const chunkIndex = Math.floor(itemIndex / chunkSize)

  if (result[chunkIndex] === undefined) {
    result[chunkIndex] = []
  }

  result[chunkIndex].push(item)

  return result
}, [])


const events = [
{id: "1"},
    {id: "2"},
    {id: "3"},
    {id: "4"},
    {id: "5"},
    {id: "6"},
    {id: "7"},
    {id: "8"},
    {id: "9"},
    {id: "10"},
    {id: "11"},
    {id: "12"},
]

console.log(chunk(events, 4))


推荐阅读