纠纷奇闻作文社交美文家庭
聚热点
家庭城市
爱好生活
创业男女
能力餐饮
美文职业
心理周易
母婴奇趣
两性技能
社交传统
新闻范文
工作个人
思考社会
作文职场
家居中考
兴趣安全
解密魅力
奇闻笑话
写作笔记
阅读企业
饮食时事
纠纷案例
初中历史
说说童话
乐趣治疗

JS判断两个数组是否相等,元素以及顺序相等,顺序不同但元素相

1月9日 霸王亭投稿
  判断两个数组是否相等一般有两种场景。
  第一种是数组完全相等,即数组元素相同且元素顺序一致;
  第二则为元素相同但顺序不同。数组完全相等
  如果数组元素只是字符串,数字,布尔值这些类型,可以考虑使用JSON。stringify或者join()的做法,目的就是转为字符串,直接判断字符串是否相等,比如:基于join解决基本判断constisArrEqual(arr1,arr2){returnarr1。join()arr2。join();};isArrEqual(〔1,2,3〕,〔1,2,3〕);trueisArrEqual(〔1,,b,false〕,〔1,,b,false〕);trueisArrEqual(〔1〕,〔1,2〕);false基于JSON。stringify解决基本判断constisArrEqual(arr1,arr2){returnJSON。stringify(arr1)JSON。stringify(arr2);};isArrEqual(〔1,2,3〕,〔1,2,3〕);trueisArrEqual(〔1,,b,false〕,〔1,,b,false〕);trueisArrEqual(〔1〕,〔1,2〕);false
  但上述两种做法,都无法对比数组中包含undefined,null的情况,比如如下对比就暴露了问题:〔undefined,1,null,false〕。join()〔,1,null,false〕。join();true
  这是因为对于join而言,undefined与null都会被转为空字符串,所以上述代码左右两边得到的都是1flase,因此相等。
  而对于JSON。stringify而言同样会存在这样的问题,比如如下例子:JSON。stringify(〔undefined,1,NaN〕)JSON。stringify(〔null,1,null〕);true
  这是因为对于JSON。stringify而言,undefined和NaN都会被转为null,这才导致上述代码相等。
  因此考虑基本数据类型以及NaN,其实可以这么实现它:constisArrEqual(arr1,arr2){returnarr1。lengtharr2。lengtharr1。every((ele,index)Object。is(ele,arr2〔index〕));};isArrEqual(〔1,b,false,undefined,null,NaN〕,〔1,b,false,undefined,null,NaN〕);true
  这里利用了Object。is方法,它接受两个参数,用于核对这两个参数是否相等,即便是NaN它也能有效判断。
  在导入excel表格场景中,也可以使用此方法来校验表头,判断是否使用正确的导入模版。元素相同顺序不同
  有这样一种场景,我们认定两个元素相同但顺序不同的数组为相同数组,比如数组〔A,B〕与〔B,A〕是相同数组。
  比如一个功能设置模块,默认就勾选了〔A,B〕两个选项,下方会有一个更新按钮,只有用户修改了设置才会将更新按钮变为可点击状态,毕竟设置没改,就没更新的必要。
  考虑到实际场景中对于值的唯一性维护,因此数组中理论上不会存在相同的值,因此我们可以这么实现:constisArrEqual(arr1,arr2){returnarr1。lengtharr2。lengtharr1。every((ele)arr2。includes(ele));};isArrEqual(〔1,b,false,undefined,null,NaN〕,〔1,null,b,undefined,false,NaN〕);true
  注意,上述实现是考虑到特殊场景不会让数组有重复项,因此可以这么实现,但如果数组有重复元素上述实现就不可行,比如这个例子就不OK:isArrEqual(〔1,1〕,〔1,null〕);true
  针对这种情况还是得考虑将两个数组进行排序,再按数组完全相等的思路对每一位进行对比。constisArrEqual(arr1,arr2){returnarr1。lengtharr2。lengtharr1。sort()。every((ele,index)Object。is(ele,arr2。sort()〔index〕));};isArrEqual(〔1,1〕,〔1,null〕);falseisArrEqual(〔null,1〕,〔1,null〕);true
投诉 评论 转载

天文学家认为可能已经发现太阳系中第九行星存在的证据据BGR报道,1983年收集的数据显示了一位英国天文学家认为可能是我们太阳系中第九行星的证据的迹象。著名天文学家、伦敦帝国学院天体物理学荣誉教授MichaelRowanRobi……图月牙泉在哪个市在如此荒凉的地方还有这样的景色月牙泉地处于甘肃省敦煌市西南五公里处的鸣沙山北麓,它位于月牙泉风景区,古称沙井。月牙泉南北长近一百米,东西宽约二十五米,泉水东深西浅,弯曲如新月。1、关于月牙泉的介绍……图智能手表的功能有哪些将来有可能成为手机的替代品智能手表在最近几年的发展过程中越来越成熟,各种功能越来越多,性能等方面也有了较大的提升,那么对于智能手表来说,很多网友是不清楚的,有一些功能更不知道。智能手机的功能相信广……云米AI油烟机SuperPro,打造高品质智能净烟厨房入冬以后再看天气预报,关注的就不止是温度了,空气质量同样令人担忧,尤其是北方这种需要供暖的城市,出门望见滚滚浓烟,大口呼吸都会有心理负担。避免空气污染少出门即可,但是生活中却有……图游戏本和笔记本的区别为什么游戏本这么贵很多想入手笔记本的小白逛完电商都觉得很奇怪,为什么游戏本比普通笔记本贵这么多呢?仅仅是因为它能用来玩游戏吗?今天就好好说说游戏本的那些门道。随着生活水平的提升,人们对于物……图长沙旅游攻略大放送带你领略不一样的风光现在我们的生活水平越来越高,很多人都喜欢出去外面游玩,这样不仅可以增长我们的见识,也能开阔我们的眼界。今天我们就跟大家来聊聊长沙的旅游攻略吧。去长沙玩的话,有哪些是不容错……三大宏观利好消息同时公布,11月中旬钢材价格会大幅上涨吗?上周宏观基本面发生了一些积极的变化,对国内钢材市场的影响较大。我们总结归纳为三大利好:一、优化疫情防控工作二十条细则公布;二、金融支持房地产市场平稳发展十六条措施公布;三、美国……图埃及旅游的简单攻略带你了解这个神秘的地域埃及,是个古老而又透着神秘气息的地方,那里宏伟的金字塔和神圣的木乃伊一定会让你大感惊奇。下面就让我们一起来了解下埃及的旅游注意事项和简单介绍吧!埃及,在我们的印象中一直是……JS判断两个数组是否相等,元素以及顺序相等,顺序不同但元素相判断两个数组是否相等一般有两种场景。第一种是数组完全相等,即数组元素相同且元素顺序一致;第二则为元素相同但顺序不同。数组完全相等如果数组元素只是字符串,数字,……图埃及狮身人面像原来藏着这么多秘密在埃及有这样一座古老的建筑,那就是狮身人面像,小编想所有人应该不会都对狮身人面像陌生吧。我们学习历史的时候提到埃及,就都会说到埃及的金字塔和狮身人面像。狮身人面像建造时间……图性能颜值的最佳平衡性价比之选三星galaxyon7三星一直在高端领域被大家所熟知,但是一些不起眼的中低端产品线大家似乎就没有那么了解。其实三星在两千元以内的产品还是有着鲜明的特点的,那就一起来看看三星on7吧。以前我们印……超越天津,北方第二城青岛机会最大北方经济第二城之争天津衰落,青岛机会最大近年来,天津在全国经济排名一再下滑,甚至北方第二城的位置也不稳,让我们看看发生了什么,它的挑战者又有谁。天津是我国四大直辖市……
阳光明媚的意思和造句上网6小时欠1万8是怎么回事背后真相闹乌龙了全球6个污染最严重的国家严重到你都想不到(图)晚上睡多久竟能决定你生什么病睡眠时间要合理孩子白白胖胖,居然是营养不良?宝宝胖点要紧吗?消息称高通联发科不太可能在2023年推出3nm移动SoC荷尔蒙是什么味道8种食物让你嗅到荷尔蒙的味道十种不适合学钢琴的人(全文)三七粉的正确吃法三七粉的禁忌(全文)婆婆丁是什么蒲公英是婆婆丁吗,蒲公英和婆婆丁的区别世界四大最豪华的酒店一般人都难以想象(图)日本自杀森林每年搜寻上百具尸体
适合圆脸菇凉的发型,修颜显瘦十分抢眼流血的拼音流血的拼音及解释春运期间乘坐火车怎么防盗离婚大数据有多少人的婚姻都毁在了小事上再见,虚伪的朋友清凉的夏雨言字旁焦的字言字旁加一个焦念什么字面对死亡,如何缓解身体和心理上的痛苦?行政工作对提升石油企业管理水平的重要性探讨四年级作文我的外婆400字界读丨华为永远不会令你失望鸿蒙3。0黑科技曝光,能干翻苹果村级保护电力设施总结

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找美丽时装彩妆资讯历史明星乐活安卓数码常识驾车健康苹果问答网络发型电视车载室内电影游戏科学音乐整形