javascript - 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"}
],
]
我怎么做?
解决方案
使用减少:
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))
推荐阅读
- c# - 在路径 Mongo 中找到太多位置(即“$”)元素
- sql - 在 CTE 中使用最大递归来生成 CTE,而不是仅在最终的 SELECT 语句中
- mongodb - 如何为 mongdb 数据库创建平面文件以及如何在弹性搜索和 kibana 中使用该平面文件来查询数据?
- react-native - React Native 更新多个子组件状态
- mysql - 需要一种仅返回具有特定列条目的数据的方法
- python - 如何在基于 gpgme 的 Python 脚本中防止密码缓存?
- android - ViewModel 似乎无法观察 MutableLiveData
- c++ - Qt C++ macOS 问题。我正在使用函数 .find("a word") 在多集中搜索单词,它适用于 windows 但不适用于 mac
- javascript - .d.ts 文件中的意外标识符
- javascript - 为什么在使用“mammoth”转换简单的 .docx 文件时没有出现此类文件错误?