【发布时间】:2018-04-02 04:35:47
【问题描述】:
我正在尝试将项目内的嵌套对象与相同的键结合起来。
- 查找重复的“顶级”值,
- 将重复的“顶级”项目合并为一个对象(包括它们的子对象。
- “类型”数组中不应有重复值
我在这里试过https://jsfiddle.net/Lpq6huvw/410/
输入数据:
[{
"a": "Mon",
"type": [{
"b": 1
}, {
"b": 3
}]
}, {
"a": "Mon",
"type": [{
"b": 2
}]
}, {
"a": "Tue",
"type": [{
"b": 40
}]
}, {
"a": "Tue",
"type": [{
"b": 50
}]
}, {
"a": "Wed",
"type": [{
"b": 30
}]
}]
进入这个数组:
[{
"a": "Mon",
"type": [{
"b": 1
}, {
"b": 3
},
{
"b": 2
}]
},
{
"a": "Tue",
"type": [{
"b": 40
},
{
"b": 50
}]
}, {
"a": "Wed",
"type": [{
"b": 30
}]
}]
我在下面尝试了这个,它将所有重复的项目映射为一个对象。但是,我希望它在其“顶级”前身下映射每个。
const z = _.uniqBy(_.filter(data.map(e=>e.a), v => _.filter(data.map(e=>e.a), v1 => v1 === v).length > 1))
const dupes = data.filter(itm => z.includes(itm.a))
const flat = _.flatMap(dupes, item =>
_(item.type)
.map(v => ({b: v.b}))
.value()
)
【问题讨论】:
-
属性名称是否始终相同,只是值发生变化?
-
是的,它们将保持不变
-
"'type' 数组中不应该有重复的值" - 你的意思是输入永远不会有重复的
type值,或者输入可能有重复但输出不应该?
标签: javascript arrays lodash arr