【发布时间】:2021-12-12 08:10:59
【问题描述】:
好的,我知道这是一项艰巨的任务。
这是我的情况,假设我有下面的对象数组
var fullData = [{foo1: bar1, foo2: bar2, foo3: bar3},
{foo1: bar4, foo2: bar5, foo3: bar6},
{foo1: bar7, foo2: bar8, foo3: bar6}]
我希望将其更改为
[{name: bar1, label: bar1}, {name: bar4, label: bar4},{name: bar7, label: bar7}]
[{name: bar2, label: bar2}, {name: bar5, label: bar5},{name: bar8, label: bar8}]
[{name: bar3, label: bar3}, {name: bar6, label: bar6}]
我从另一个将 AoO 拆分为数组对象的线程中找到了以下内容。
var result = res.body.reduce((r, o) => {
Object.entries(o).forEach(([k, v]) => (r[k] = r[k] || []).push(v));
return r;
}, Object.create(null));
但它不会过滤重复项,也不会按照我上面标记的方式格式化数据,而且我无法弄清楚上面的函数是如何工作的。对于重复项,我选择在 result 的每个单独元素上使用来自 lodash 的 _.uniq,但被困在“名称”和“标签”格式上,所以我想如果有可能我会问比我更有经验的程序员一种将所有这些合并到一个函数中的方法。
【问题讨论】:
标签: javascript arrays object lodash