JavaScript随手笔记---对比数组差异

简介: JavaScript随手笔记---对比数组差异



一、方法一:数组拼接

  可以利用concat函数对两个数组进行拼接一个数组,再用filter函数过滤数组并将差异返回成一个新的数组。再对新数组判定就能知道两个数组是否有差异了,下面先简单的介绍这两个函数使用方法;

 1.concat()函数

  语法

array1.concat(array2, array3,…, arrayX)

  参数

参数 描述
array2, array3,…, arrayX 必需。需要连接的数组。

  返回值

类型 描述
Array 对象 返回一个新的数组。该数组是通过把所有 arrayX 参数添加到 arrayObject 中生成的。
如果要进行 concat() 操作的参数是数组,那么添加的是数组中的元素,而不是数组。

 2.filter()函数

  语法

array.filter(function(currentValue,index,arr), thisValue)

  参数

参数 描述
currentValue 必须的,表示当前元素的值
index 可选参数,当前元素的索引值
arr 可选参数,当前元素属于的数组对象
thisValue 可选。对象作为该执行回调时使用,传递给函数,用作 “this” 的值。
如果省略了 thisValue ,“this” 的值为 “undefined”

 3.使用方式

  • 差异比较方法:
getArrDifference: function(arr1, arr2){
  return arr1.concat(arr2).filter(function(value, i, arr){
    return arr.indexOf(value) === arr.lastIndexOf(value);
  })
}
  • 演示示例:

  可以根据不同的需要来对filter函数进行处理,由于这里只能识别出两个数组有差异即可,就没有做过多的处理; 注意:filter()不会对空数组进行检测、不会改变原始数组。

var list1 = ["Engineer1", "Engineer2", "Engineer3", "Engineer4", "Engineer5"];
   var list2 = ["Engineer1", "Engineer2", "Engineer1", "Engineer5"];
   var list3 = ["Engineer1", "Engineer3", "Engineer5"];
   var list4 = ["Engineer1", "Engineer4", "Engineer5"];
   console.log(that.getArrDifference(list1,list2)); 
   console.log(that.getArrDifference(list3, list4));
  • 运行结果:

二、方法二:数组转字符串

  相比第一种方法,第二种比较简单点,只要用toString()函数将需要比较的数组转换成字符串,再对比即可;

  • 差异比较方法:
getArrDifference: function(arr1, arr2){
    return arr1.toString() != arr2.toString();
  },
  • 演示示例:

  当两个字符串不相同时,则返回true进行处理即可;

var list1 = ["Engineer1", "Engineer2", "Engineer3", "Engineer4", "Engineer5"];
    var list2 = ["Engineer1", "Engineer2", "Engineer1", "Engineer5"];
    var list3 = ["Engineer1", "Engineer3", "Engineer5"];
    var list4 = ["Engineer1", "Engineer4", "Engineer5"];
    console.log(that.getArrDifference(list1,list2)); 
    console.log(that.getArrDifference(list3, list4));
  • 运行结果:


总结

  感谢观看,如果有帮助到你,请给文章点个赞和收藏,让更多的人看到。🌹 🌹 🌹

  也欢迎你,关注我。👍 👍 👍

  原创不易,还希望各位大佬支持一下,你们的点赞、收藏和留言对我真的很重要!!!💕 💕 💕 最后,本文仍有许多不足之处,欢迎各位认真读完文章的小伙伴们随时私信交流、批评指正!


相关文章
|
4月前
|
JavaScript 前端开发 IDE
TypeScript vs. JavaScript:技术对比与核心差异解析
TypeScript 作为 JavaScript 的超集,通过静态类型系统、编译时错误检测和强大的工具链支持,显著提升代码质量与可维护性,尤其适用于中大型项目和团队协作。相较之下,JavaScript 更灵活,适合快速原型开发。本文从类型系统、错误检测、工具支持等多维度对比两者差异,并提供技术选型建议,助力开发者合理选择。
960 1
|
JavaScript 前端开发 程序员
前端学习笔记——node.js
前端学习笔记——node.js
408 0
|
10月前
|
JavaScript 前端开发 API
JavaScript中通过array.map()实现数据转换、创建派生数组、异步数据流处理、复杂API请求、DOM操作、搜索和过滤等,array.map()的使用详解(附实际应用代码)
array.map()可以用来数据转换、创建派生数组、应用函数、链式调用、异步数据流处理、复杂API请求梳理、提供DOM操作、用来搜索和过滤等,比for好用太多了,主要是写法简单,并且非常直观,并且能提升代码的可读性,也就提升了Long Term代码的可维护性。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
11月前
|
JavaScript 前端开发 IDE
【编程向导】Js与Ts差异详解:选择与权衡
JavaScript 一直是 Web 开发的基石,以其灵活性和动态性著称,但其松散类型可能导致大型项目中出现难以调试的错误。TypeScript 作为 JavaScript 的超集,通过引入静态类型系统,提供了更高的类型安全性和更好的工具支持,尤其适合大型团队和复杂项目。本文详细对比了 JavaScript 和 TypeScript 的优缺点,并提供了实际代码示例,帮助开发者根据项目需求选择合适的工具。
1495 2
|
算法 开发者
Moment.js库是如何处理不同浏览器的时间戳格式差异的?
总的来说,Moment.js 通过一系列的技术手段和策略,有效地处理了不同浏览器的时间戳格式差异,为开发者提供了一个稳定、可靠且易于使用的时间处理工具。
365 57
|
10月前
|
数据采集 JavaScript 前端开发
JavaScript中通过array.filter()实现数组的数据筛选、数据清洗和链式调用,JS中数组过滤器的使用详解(附实际应用代码)
用array.filter()来实现数据筛选、数据清洗和链式调用,相对于for循环更加清晰,语义化强,能显著提升代码的可读性和可维护性。博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
JavaScript 前端开发
Moment.js与其他处理时间戳格式差异的JavaScript库相比有什么优势?
Moment.js与其他处理时间戳格式差异的JavaScript库相比有什么优势?
|
JavaScript 前端开发 定位技术
Nuxt.js 和 Next.js 差异
Nuxt.js 和 Next.js 差异
892 2
|
自然语言处理 前端开发 JavaScript
🛠️ JavaScript数组操作指南:20个精通必备技巧🚀
本文详细介绍了 JavaScript 中的 20 个高效数组操作技巧,涵盖了从基本的添加、移除元素,到数组转换和去重等高级操作。强调了不可变性的重要性,提供了清晰的代码示例,帮助开发者编写更整洁和高效的代码。无论是新手还是经验丰富的开发者,这些技巧都将显著提升您的编码能力,使您在项目中更具竞争力。
276 2
|
JavaScript 前端开发 测试技术
JS都有哪些操作数组的方法
JS都有哪些操作数组的方法
446 3