将多个键分组到具有唯一名称的对象数组中
当前的任务涉及修改对象数组以方便渲染。目标是按特定键对对象进行分组,而不管它们在原始数组中的实际名称如何。
考虑以下输入数组:
const items = [ { tab: 'Results', section: '2017', title: 'Full year Results', description: 'Something here', }, { tab: 'Results', section: '2017', title: 'Half year Results', description: 'Something here', }, { tab: 'Reports', section: 'Marketing', title: 'First Report', description: 'Something here', } ];
我们的目标输出是有一个新数组具有以下结构:
const output = [ { tab: 'Results', sections: [ { section: '2017', items: [ { 'item that belongs here' }, { ... } ], }, }, { tab: 'Reports', sections: [ { section: 'Marketing', items: [ { ... }, { ... } ], }, }, ... ]
为了实现这一点,我们可以结合使用 Lodash 的 _.map 和 _.groupBy函数:
const groupAndMap = (items, itemKey, childKey, predic) => { return _.map(_.groupBy(items, itemKey), (obj, key) => ({ [itemKey]: key, [childKey]: (predic && predic(obj)) || obj })); }; var result = groupAndMap(items, "tab", "sections", arr => groupAndMap(arr, "section", "items"));
结果变量现在包含所需的分组对象数组:
console.log(result);
以上是如何使用 Lodash 对对象数组中的多个键进行分组?的详细内容。更多信息请关注PHP中文网其他相关文章!