大家好,又见面了,我是你们的朋友全栈君。
先来看【原始数组】和【最终数组】对比:
标题有点绕,总的来说,是一个数组,根据以下步骤拆解:
Lodash 通过降低 array、number、objects、string 等等的使用难度从而让 JavaScript 变得更简单。 Lodash 的模块化方法 非常适用于:
本篇文章中,主要用到了以下几个:
_.groupBy(collection, [iteratee=_.identity])
https://www.lodashjs.com/docs/lodash.groupBy#_groupbycollection-iteratee_identity
https://www.lodashjs.com/docs/lodash.toPairsIn#_topairsinobject
_.map(collection, [iteratee=_.identity])
https://www.lodashjs.com/docs/lodash.map#_mapcollection-iteratee_identity
https://www.lodashjs.com/docs/lodash.concat#_concatarray-values
_.uniqBy(array, [iteratee=_.identity])
https://www.lodashjs.com/docs/lodash.uniqBy#_uniqbyarray-iteratee_identity
_.filter(collection, [predicate=_.identity])
https://www.lodashjs.com/docs/lodash.filter#_filtercollection-predicate_identity
这两个值分别做筛,方法看起来是有点多,但根据前面拆解的步骤点,你会发现每一个都用得到,也可以尝试不借助 lodash 工具来实现,emmmm……我试了下,代码太长了,就放弃了,感兴趣的话,你也可以试试。
[
{
"id": "1",
"title": "事件_1",
"label": "金融",
"type": "企业",
},
{
"id": "2",
"title": "事件_2",
"label": "娱乐",
"type": "",
},
{
"id": "3",
"title": "事件_3",
"label": "娱乐",
"type": "娱乐",
},
{
"id": "4",
"title": "事件_4",
"label": "社会",
"type": null,
},
{
"id": "5",
"title": "事件_5",
"label": "",
"type": "社会",
}
]
原始数组中,label 和 type 都有 “” 或者 null 的状态,先不要在意这个,我们到最后才会处理异常状态。
lodash.groupBy(res_data, "label")
lodash.groupBy(res_data, "type")
lodash.toPairsIn( lodash.groupBy(res_data, "label") )
lodash.toPairsIn( lodash.groupBy(res_data, "type") )
lodash.toPairsIn(
lodash.groupBy(res.data.result, "label")
)
.map(([prop, value]) => ({ prop, value }))
lodash.toPairsIn(
lodash.groupBy(res.data.result, "type")
)
.map(([prop, value]) => ({ prop, value }))
lodash.concat(
lodash.toPairsIn(
lodash.groupBy(res.data.result, "label")
)
.map(([prop, value]) => ({ prop, value })) ,
lodash.toPairsIn(
lodash.groupBy(res.data.result, "type")
)
.map(([prop, value]) => ({ prop, value }))
)
lodash.uniqBy(
lodash.concat(
lodash.toPairsIn(
lodash.groupBy(res.data.result, "label")
)
.map(([prop, value]) => ({ prop, value })) ,
lodash.toPairsIn(
lodash.groupBy(res.data.result, "type")
)
.map(([prop, value]) => ({ prop, value }))
),
"prop"
)
lodash.uniqBy(
lodash.concat(
lodash.toPairsIn(
lodash.groupBy(res.data.result, "label")
)
.map(([prop, value]) => ({ prop, value })) ,
lodash.toPairsIn(
lodash.groupBy(res.data.result, "type")
)
.map(([prop, value]) => ({ prop, value }))
),
"prop"
)
.filter((item) => {
return Boolean(!!item.prop);
})
.filter((item) => {
return item.prop != "null";
});
———-结束———
总的来说是想纪录下吧,毕竟这个让我花了2个小时写完的,本来使用原生的JS写的,写完发现太长了,还是借助工具吧。
毕竟,“一般认为,人与动物的本质区别在于制造与使用工具”。
虽然这样说不太好,没有原生的基础,我们也想不到造工具。
拜~
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/197584.html原文链接:https://javaforall.cn