如何从数组提取category作为键,构建含指定字段的新数组?
需求说明
从给定的data对象中提取category字段作为新输出对象的键;从listData数组的list列表中提取id、category字段,并将原title字段重命名为name,组成对应键下的数组。
输入示例
输入data对象
const data = { "32": { "id": 32, "category": "Grocery Items", }, "33": { "id": 33, "category": "Household Items", }, }
输入listData数组
const listData = [ { "data": { "list": [ { "id": 1, "category_id": 32, "title": "Eggs", "category": "Grocery Items" }, { "id": 2, "category_id": 32, "title": "Bacon", "category": "Grocery Items" } ] } } ]
期望输出
const output = { "Grocery Items": [ { "id": 1, "category": "Grocery Items", "name": "Eggs", }, { "id": 2, "category": "Grocery Items", "name": "Bacon", }, ] }
解决方案代码
// 初始化输出对象 const output = {}; // 遍历listData中的所有列表项 listData.forEach(group => { group.data.list.forEach(item => { // 提取字段并完成重命名 const formattedItem = { id: item.id, category: item.category, name: item.title }; // 若当前分类不存在数组则初始化 if (!output[item.category]) { output[item.category] = []; } // 将格式化后的项推入对应分类数组 output[item.category].push(formattedItem); }); }); console.log(output);
代码逻辑说明
- 先创建空对象
output用于存储最终结果 - 逐层遍历
listData,取出目标列表data.list - 对列表中的每一项,提取
id、category字段,同时将title重命名为name,生成新的对象 - 检查
output中是否存在当前分类对应的数组,不存在则创建空数组 - 将新生成的对象添加到对应分类的数组中
内容的提问来源于stack exchange,提问作者Derek Hough
相关产品推荐
相关产品推荐

