原生js数组去重和排序

简介: 原生js数组去重和排序

js数组的去重,排序,各有几种方式,分别是怎么实现的?

数组去重

数组去重方法一:

  • arr.splice
var arr = [1, 3, 5, 6, 3, 5, 6, 3, 7, 9, 23, 23];
    function a(arr) {
      for (var i = 0; i < arr.length - 1; i++) {
        for (var j = i + 1; j < arr.length; j++) {
          if (arr[i] == arr[j]) {
            arr.splice(j, 1);
            j--;
          }
        }
      }
      return arr;
    }
    var arr1 = a(arr);
    console.log(arr1);  //  [1, 3, 5, 6, 7, 9, 23]

数组去重方法二:

  • 借助新数组,判断新数组中是否存在该元素如果不存在则将此元素添加到新数组中(原数组长度不变但被按字符串顺序排序)
var arr = [1, 3, 5, 6, 3, 5, 6, 3, 7, 9, 23, 23];
function sun(arr) {
  var b = [];
  var c;
  arr.sort();
  c = arr[0];
  b.push(arr[0]);
  for (var i = 0; i < arr.length; i++) {
    if (arr[i] != c) {
      b.push(arr[i]);
      c = arr[i];
    }
  }
  return b;
}
var arr1 = sun(arr);
console.log(arr1); //[1, 23, 3, 5, 6, 7, 9]

数组去重方法三:

  • 创建一个新数组,判断新数组中是否存在该元素如果不存在则将此元素添加到新数组中
var arr = [1, 23, 1, 1, 1, 3, 23, 5, 6, 7, 9, 9, 8, 5];
function norepeat(arr) {
  var temp = [];
  for (var i = 0; i < arr.length; i++) {
    if (temp.indexOf(arr[i]) == -1) {
      temp.push(arr[i]);
    }
  }
  return temp;
}
var arr2 = norepeat(arr);
console.log(arr2); //[1, 23, 3, 5, 6, 7, 9, 8]

数组去重方法四:

  • 借助 indexOf() 方法判断此元素在数组中首次出现的位置下标与循环下标是否相等
var arr = [1, 23, 1, 1, 1, 3, 23, 5, 6, 7, 9, 9, 8, 5, 5, 5];
function norepeat(arr) {
  for (var i = 0; i < arr.length; i++) {
    if (arr.indexOf(arr[i]) != i) {
      arr.splice(i, 1); //删除数组元素后数组长度减1后面的元素前移
      i--; //数组下标回退
    }
  }
  return arr;
}
var arr2 = norepeat(arr);
console.log(arr2); //[1, 23, 3, 5, 6, 7, 9, 8]

数组去重方法五:

  • 利用数组中的 filter 方法
var arr = ["apple", "banana", "pear", "apple", "orange", "orange"];
// filter 内的三个参数分别代表:值,下标,整个数组
var arr2 = arr.filter(function (value, index, self) {
  return self.indexOf(value) == index;
});
console.log(arr2); //["apple", "banana", "pear", "orange"]

数组排序

数组排序方法一:

  • sort 方法(a-b正向 b-a 反向)
var arr = [3, 1, 5, 8, 28];
//正向 a-b
var arr1 = arr.sort(function (a, b) {
  return a - b;
});
console.log(arr1); //[1,3,5,8,28];
//反向 b-a
var arr2 = arr.sort(function (a, b) {
  return b - a;
});
console.log(arr2); //[28,8,5,3,1]

数组排序方法二:

  • 冒泡排序
var arr = [3, 1, 5, 8, 28];
function sortArr(arr) {
  for (var i = 0; i < arr.length; i++) {
    //arr.length-i 保证每次比较都会少比较一位(因为最大的一位已经找出,放在了最后)
    for (var j = 0; j < arr.length - i; j++) {
      if (arr[j] > arr[j + 1]) {
        var temp = arr[j];
        arr[j] = arr[j + 1];
        arr[j + 1] = temp;
      }
    }
  }
  return arr;
}
var arr1 = sortArr(arr);
console.log(arr1); //[1, 3, 5, 8, 28]

数组排序方法三:

  • 选择排序
var arr = [1, 23, 1, 1, 1, 3, 23, 5, 6, 7, 9, 9, 8, 5];
function selectSort(arr) {
  for (var i = 0; i < arr.length; i++) {
    //设置当前范围最小值和索引
    var min = arr[i];
    var minIndex = i;
    //在该范围选出最小值
    for (var j = i + 1; j < arr.length; j++) {
      if (min > arr[j]) {
        min = arr[j];
        minIndex = j;
      }
    }
    //将最小值插入
    arr.splice(i, 0, min);
    //将原来位置的最小值删除
    arr.splice(minIndex + 1, 1);
  }
  return arr;
}
var arr1 = selectSort(arr);
console.log(arr1); //[1, 1, 1, 1, 3, 5, 5, 6, 7, 8, 9, 9, 23, 23]

以上就是原生 js 中数组的去重与排序的方法,不懂得也可以在评论区里问我,以后会持续添加一些新的功能,敬请关注。

相关文章
|
8月前
|
JavaScript 前端开发 算法
JavaScript 中通过Array.sort() 实现多字段排序、排序稳定性、随机排序洗牌算法、优化排序性能,JS中排序算法的使用详解(附实际应用代码)
Array.sort() 是一个功能强大的方法,通过自定义的比较函数,可以处理各种复杂的排序逻辑。无论是简单的数字排序,还是多字段、嵌套对象、分组排序等高级应用,Array.sort() 都能胜任。同时,通过性能优化技巧(如映射排序)和结合其他数组方法(如 reduce),Array.sort() 可以用来实现高效的数据处理逻辑。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
8月前
|
JavaScript 算法 前端开发
JS数组操作方法全景图,全网最全构建完整知识网络!js数组操作方法全集(实现筛选转换、随机排序洗牌算法、复杂数据处理统计等情景详解,附大量源码和易错点解析)
这些方法提供了对数组的全面操作,包括搜索、遍历、转换和聚合等。通过分为原地操作方法、非原地操作方法和其他方法便于您理解和记忆,并熟悉他们各自的使用方法与使用范围。详细的案例与进阶使用,方便您理解数组操作的底层原理。链式调用的几个案例,让您玩转数组操作。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
8月前
|
存储 JavaScript 前端开发
全网最全情景,深入浅出解析JavaScript数组去重:数值与引用类型的全面攻略
如果是基础类型数组,优先选择 Set。 对于引用类型数组,根据需求选择 Map 或 JSON.stringify()。 其余情况根据实际需求进行混合调用,就能更好的实现数组去重。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
前端开发 JavaScript 算法
使用 JavaScript 数组方法实现排序与去重
【10月更文挑战第21天】通过灵活运用 `sort()` 方法和 `filter()` 方法,我们可以方便地实现数组的排序和去重。同时,深入理解排序和去重的原理,以及根据实际需求进行适当的优化,能够更好地应对不同的情况。可以通过实际的项目实践来进一步掌握这些技巧,并探索更多的应用可能性。
361 59
|
10月前
|
JavaScript 前端开发 测试技术
盘点原生JavaScript中直接触发事件的方式
本文全面探讨了原生JavaScript中触发事件的多种方式,包括`dispatchEvent`、`Event`构造函数、`CustomEvent`构造器、直接调用事件处理器以及过时的`createEvent`和`initEvent`方法。通过技术案例分析,如模拟点击事件、派发自定义数据加载事件和实现提示框系统,帮助开发者掌握这些方法在实际开发中的应用,提升灵活性与兼容性。
380 3
|
移动开发 前端开发 JavaScript
原生JavaScript+canvas实现五子棋游戏_值得一看
本文介绍了如何使用原生JavaScript和HTML5的Canvas API实现五子棋游戏,包括棋盘的绘制、棋子的生成和落子、以及判断胜负的逻辑,提供了详细的代码和注释。
313 0
原生JavaScript+canvas实现五子棋游戏_值得一看
|
存储 JavaScript 前端开发
JavaScript数组去重的八种方法详解及性能对比
在JavaScript开发中,数组去重是一个常见的操作。本文详细介绍了八种实现数组去重的方法,从基础的双重循环和 indexOf() 方法,到较为高级的 Set 和 Map 实现。同时,分析了每种方法的原理和适用场景,并指出了使用 Set 和 Map 是目前最优的解决方案。通过本文,读者可以深入理解每种方法的优缺点,并选择最合适的数组去重方式。
881 0
|
前端开发 JavaScript 索引
JavaScript 数组常用高阶函数总结,包括插入,删除,更新,反转,排序等,如map、splice等
JavaScript数组的常用高阶函数,包括遍历、插入、删除、更新、反转和排序等操作,如map、splice、push、pop、reverse等。
400 0
|
JavaScript 前端开发
用Javascript对二维数组DIY按汉语拼音的排序方法
用Javascript对二维数组DIY按汉语拼音的排序方法
|
Devops 持续交付 测试技术
JSF遇上DevOps:开发流程将迎巨变?一篇文章带你领略高效协同的魅力!
【8月更文挑战第31天】本文探讨了如何在JavaServer Faces(JSF)开发中融入DevOps文化,通过持续集成与部署、自动化测试、监控与日志记录及反馈机制,提升软件交付速度与质量。文中详细介绍了使用Jenkins进行自动化部署、JUnit与Selenium进行自动化测试、ELK Stack进行日志监控的具体方法,并强调了持续改进的重要性。
165 0

热门文章

最新文章