lodash判断对象数组是否相等_js删除数组中指定元素并返回剩下的

lodash判断对象数组是否相等_js删除数组中指定元素并返回剩下的使用lodash完成数据处理;毕竟,一般认为,人与动物的本质区别在于制造与使用工具

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

先来看【原始数组】和【最终数组】对比:

lodash判断对象数组是否相等_js删除数组中指定元素并返回剩下的

标题有点绕,总的来说,是一个数组,根据以下步骤拆解:

  • ①    根据两个不同字段 “label” 、”type” 分别做筛选,-> 生成两个 对象 obj_label 和 obj_type
  • ②    将 obj_label 和 obj_type 转为 数组,分别是 arr_label 和 arr_type
  • ③    合并 arr_label 和 arr_type 为 modu_data
  • ④    去重 modu_data
  • ⑤    过滤 modu_data 中为空的键值

前置了解:

lodash.jslodash判断对象数组是否相等_js删除数组中指定元素并返回剩下的https://www.lodashjs.com/

Lodash 通过降低 array、number、objects、string 等等的使用难度从而让 JavaScript 变得更简单。 Lodash 的模块化方法 非常适用于:

  • 遍历 array、object 和 string
  • 对值进行操作和检测
  • 创建符合功能的函数

本篇文章中,主要用到了以下几个:

_.groupBy(collection, [iteratee=_.identity])lodash判断对象数组是否相等_js删除数组中指定元素并返回剩下的https://www.lodashjs.com/docs/lodash.groupBy#_groupbycollection-iteratee_identity

 _.toPairsIn(object)lodash判断对象数组是否相等_js删除数组中指定元素并返回剩下的https://www.lodashjs.com/docs/lodash.toPairsIn#_topairsinobject

 _.map(collection, [iteratee=_.identity])lodash判断对象数组是否相等_js删除数组中指定元素并返回剩下的https://www.lodashjs.com/docs/lodash.map#_mapcollection-iteratee_identity

 _.concat(array, [values])lodash判断对象数组是否相等_js删除数组中指定元素并返回剩下的https://www.lodashjs.com/docs/lodash.concat#_concatarray-values

 _.uniqBy(array, [iteratee=_.identity])lodash判断对象数组是否相等_js删除数组中指定元素并返回剩下的https://www.lodashjs.com/docs/lodash.uniqBy#_uniqbyarray-iteratee_identity

 _.filter(collection, [predicate=_.identity])lodash判断对象数组是否相等_js删除数组中指定元素并返回剩下的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 的状态,先不要在意这个,我们到最后才会处理异常状态。

①  使用 groupBy(),第一个参数是原始数组,第二个值是根据“关键词”做筛选,在这里需要根据 label 和 type 这两个值分别做筛选,生成两个键值对象

lodash.groupBy(res_data, "label")

lodash.groupBy(res_data, "type")

lodash判断对象数组是否相等_js删除数组中指定元素并返回剩下的

② 使用 toPairsIn() 将对象转为数组,参数是 Object 对象

lodash.toPairsIn(  lodash.groupBy(res_data, "label")  )

lodash.toPairsIn(  lodash.groupBy(res_data, "type")  )

lodash判断对象数组是否相等_js删除数组中指定元素并返回剩下的

③  使用 map() 将数组转为 Object 键值对 对象

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判断对象数组是否相等_js删除数组中指定元素并返回剩下的

④ 使用 concat() 将两个数组 组合起来,有重复的暂时不做处理

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判断对象数组是否相等_js删除数组中指定元素并返回剩下的

⑤  使用 uniqBy() 针对 “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"

)

lodash判断对象数组是否相等_js删除数组中指定元素并返回剩下的

⑥ 使用 filter() 过滤掉 !!props 的对象

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";
});

lodash判断对象数组是否相等_js删除数组中指定元素并返回剩下的

———-结束———

总的来说是想纪录下吧,毕竟这个让我花了2个小时写完的,本来使用原生的JS写的,写完发现太长了,还是借助工具吧。

毕竟,“一般认为,人与动物的本质区别在于制造与使用工具”。

虽然这样说不太好,没有原生的基础,我们也想不到造工具。

关注公众号呀~“【DataShow Chart】”,同步发文,完整代码, 指路 ->公众号<-:

lodash判断对象数组是否相等_js删除数组中指定元素并返回剩下的

 拜~

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/197584.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • ffmpeg opencv_ffmpeg -q:v

    ffmpeg opencv_ffmpeg -q:v最直接的区别就是av_freep()会在av_free()的基础上,把传入的指针再置为NULL。FFmpeg源代码:av_free()voidav_free(void*ptr){#if

    2022年8月6日
    8
  • MySQL 将字符串转换为数字类型并进行排序

    MySQL 将字符串转换为数字类型并进行排序起因:需要对接第三方统计系统,并且第三方系统给的数据那真的是一团乱,害,都是泪呀,头发又感觉凉飕飕的;数据有毒,所有的小数都是用varchar(20)保存的,现在有要对数据进行排序并展示。示例数据:area_gdp表idareagdp1北京12002上海61003广州60004深圳980select*fromarea_gdpORDERBYgdpASC#查询结果如下1 北京 12003 广州 60002 上海

    2022年5月18日
    47
  • 字符串数组转对象数组怎么操作_前端字符串转数组

    字符串数组转对象数组怎么操作_前端字符串转数组constreasonLi:any[]=[];reasonList.forEach(it=>{reasonLi.push({answer:it});});console.log(‘reasonLiarr’,reasonLi);

    2025年10月21日
    2
  • 深入解析Linux Platform_device 及驱动

    深入解析Linux Platform_device 及驱动[导读]前文分析了Linux设备驱动的驱动模型,本文来聊聊Platform_driver/Platform_device这个类。做嵌入式Linux的驱动,这个也是绕不开的,所以来学习分析总结一下。

    2022年7月3日
    22
  • 国产FPGA现状_fpga未来发展前景

    国产FPGA现状_fpga未来发展前景原文:https://www.sohu.com/a/229245757_132567来源:内容来自财通证券TMT组,谢谢。2018年上半年对于中国半导体行业而言是多事之秋,发生了几件让国人深入思考的大事。我作为IC产业的逃兵,最近也在思考很多的问题,包括资本市场、集成电路行业和研究所的一些不成熟的想法。2008年进入华中科技大学电子系,中科院半导体所毕业后进入联发科从事手机芯片开发(没错,就是卖的不怎么好的X30)。离开MTK之前有一段小插曲,招我进联发科的老大后来自己出来创业做安防芯片,当时喊

    2022年4月19日
    46
  • Retrofit2.0 请求数据 一直出返回网络错误,错误代码 414

    Retrofit2.0 请求数据 一直出返回网络错误,错误代码 414今天使用rettorfit去请求数据一直不成功,请求逻辑上以及请求参数上都没有问题,后台也验证过是通的(我用xutils3请求也是成功的,后来意识到xutils3是将参数放在请求体里面),但是就是一直不能请求成功,后来终于发现还是参数的问题。由于使用的是retrofitPOST请求,查询字段用的是@QueryMap,而这个查询时是直接拼接在url的后面,但是url的请求接口是有长度限制的…

    2022年5月5日
    58

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号