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删除数组中指定元素并返回剩下的

 拜~

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(1)


相关推荐

  • qml入门教程_前端从入门到放弃

    qml入门教程_前端从入门到放弃发现了一个问题:QML:如果你发现了你的main.cpp是这个就会爆上面错误。修改为:……….QMLweb:直接给跪下了https://qmlweb.github.io/&l

  • 哈夫曼树

    哈夫曼树一、哈夫曼树的概念和定义 什么是哈夫曼树?让我们先举一个例子。判定树:       在很多问题的处理过程中,需要进行大量的条件判断,这些判断结构的设计直接影响着程序的执行效率。例如,编制一个程序,将百分制转换成五个等级输出。大家可能认为这个程序很简单,并且很快就可以用下列形式编写出来:  if(score<60) cout<<"Bad"<

  • Golang——uint32「建议收藏」

    Golang——uint32「建议收藏」leetcode:190、1911.uint(usigned)均是无符号整型,uint、uint64占用内存64位。2.int带符号整型,占64位题目其实给定的是十进制varnumuint32=43261596,计算机内存以32位补码形式存储此数,题目说颠倒此数的二进制位,十进制变为2进制:除2取余。3.取10进制数据最低位:n%10,n=n/10;num:=9//intfor…{…}//会得到9、84.取(10进制的)2进制格式数据最低位:n%2,

  • 在非XP操作系统下模拟的LockWorkStation函数

    在非XP操作系统下模拟的LockWorkStation函数在非XP操作系统下模拟的LockWorkStation函数文章作者:Delphiscn信息来源:邪恶八进制信息安全团队程序功能:可在非XP的操作系统下所定计算机(为了程序的界面美观,我使用了SUIPack控件,有兴趣的朋友可以去Delphibox.com下载)*********************************************************…

  • OpenWrite 博客群发使用步骤[通俗易懂]

    OpenWrite 博客群发使用步骤[通俗易懂]OpenWrite,做最懂自媒体的工具平台。主要是群发软件、博客导流公众号阅读全文工具媒体发布平台、博客群发平台、软文推广平台软文推广发布、博客发布官网引流科技小工具微信公众号Markdown编辑器、多平台免费图床配置Markdown编辑器的免费简洁流畅、文章一键群发等的免费自媒体运营工具助手注意:当前版本必须使用Chrome浏览器,并安装插件「OpenWrite助手」https://openwrite.cn/plugin-chrome/1、点击指定渠道图标,在新窗口登录渠道的账号

  • matlab机器人画圆

    matlab机器人画圆最近在学习机器人学导论,老师发来一个.m文件,构建了一个机器人,然后让这个机器人末端画圆。然而我遇到了很多问题。先上代码%定义连杆%thetadaalphaL1=Link([01380-pi/2]);L2=Link([001350]);L3=Link([001470]);%定义关节角范围L1.ql…

发表回复

您的电子邮箱地址不会被公开。

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