【发布时间】:2018-02-02 07:31:41
【问题描述】:
我在我的一个项目中使用 angular 4,我遇到了一种情况,我必须根据多个条件对数据进行分组,如下所述。
原始数据
[
{
age: "12",
details: [
{
address: "street1"
}
]
},
{
age: "12",
details: [
{
address: "street2"
}
]
},
{
age: "12",
details: [
{
address: "street1"
}
]
}]
我想根据年龄和地址字段对数据进行分组,所以结果会是这样的
{
stree1: [{
age: "12",
details: [
{
address: "street1"
}
]
}, {
age: "12",
details: [
{
address: "street1"
}
]
}
],
street2: [{
age: "12",
details: [
{
address: "street1"
}
]
}]
}
我知道我们可以使用 lodash 根据单个条件对数据进行分组,例如
_.groupBy(data, 'age');
但我不明白如何根据多种条件执行此操作。我想将所有具有相同地址和相同年龄的对象分组。类似的东西
_.groupBy(data, 'age' && details[0].address);
如何解决这个问题。请帮忙。
【问题讨论】:
-
如果他们中的一些人已经 14 岁了,怎么办?你能给出预期的输出吗?
-
我明白你为什么问这个问题.. 有没有办法只输出那些匹配的对象并丢弃那些没有匹配的对象。即在给定的示例中,street2 数据甚至不会存在...
-
所以如果有多个对象的组合值为街道+地址,那么只有它会出现分组?是吗?
-
另外,
detaills数组将只有一个对象?或者其他条目可以在那里? -
是的,细节永远只有一个对象
标签: javascript angular lodash angular2-services