数组元素去重、按大小排序、反序排序(数组翻转),使用内置方法sort()/reverse()和非内置(自定义)方法

本文介绍了如何使用JavaScript数组去重的多种方法,包括Map、Set和Array.includes,还展示了内置sort()和reverse()方法以及非内置冒泡排序实现的升序、降序和反序操作。多条件排序和非内置排序算法也进行了演示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数组元素去重、按大小排序、反序排序,使用内置方法sort()/reverse()和非内置(自定义)方法

  1. 数组元素去重
	// 1、map去重
      let arr = [1, 2, 3, 4, 5, 3, 4, 6, 7, 86, 5, 4, 22, 1];
      const result = [];

      const map = new Map();
      for (let i of arr) {
        if (!map.has(i)) {
          map.set(i, true);
          result.push(i);
        }
      }
      console.log(result);

      // 2、new Set()去重,Set类似数组,其所有成员唯一,Array.from将一个类数组或可遍历对象转换成一个真正的数组
      let result2 = new Set(arr);
      let a = Array.from(result2);
      console.log(a);

      // 3、Array includes去重
      let result3 = [];
      for (i of arr) {
        if (!result3.includes(i)) {
          result3.push(i);
        }
      }
      console.log(result3);

      //4、splice(开始下标,删除的元素数,添加的新元素)方法用于添加或删除数组中的元素

      for (var i = 0; i < arr.length; i++) {
        for (var j = i + 1; j < arr.length; j++) {
          if (arr[i] === arr[j]) {
            arr.splice(j, 1);
            j--;
          }
        }
      }
      console.log(arr);
      //使用判断下标的方法indexOf(arr)==-1
  1. 升序排序
//内置方法sort()
var arr3 = [23, 34, 22, 3, 56, 8, 9, 32];
arr3.sort(function (a, b) {
  return a - b;
});
console.log(arr3);//[ 3,  8,  9, 22,23, 32, 34, 56]

多条件排序(当某一值相等时按另一个字段排序)

//按AValue从大到小排序,当AValue值相等时,按BValue从大到小排序
if (b.AValue== a.AValue) {
   return b.BValue- a.BValue
} else return b.AValue- a.AValue;

非内置方法(冒泡排序)

//非内置方法
var arr3 = [23, 34, 22, 3, 56, 8, 9, 32];
var temp = 0;
for (var i = 0; i < arr3.length; i++) {
  for (var j = i + 1; j < arr3.length; j++) {
    if (arr3[i] > arr3[j]) {
     // temp = arr3[j];
     // arr3[j] = arr3[i];
     // arr3[i] = temp;
     //es6解构赋值
     [arr3[i], arr3[j]] = [arr3[j], arr3[i]]
    }
  }
}
console.log(arr3);//[ 3,  8,  9, 22,23, 32, 34, 56]
  1. 降序排序
    内置方法sort()
//内置方法sort()
var arr3 = [23, 34, 22, 3, 56, 8, 9, 32];
arr3.sort(function (a, b) {
  return b - a;
});
console.log(arr3);//[56, 34, 32, 23,22,  9,  8,  3]

非内置方法

//非内置方法
var arr3 = [23, 34, 22, 3, 56, 8, 9, 32];
for (var i = 0; i < arr3.length; i++) {
  for (var j = i + 1; j < arr3.length; j++) {
    if (arr3[i] < arr3[j]) {
       //es6解构赋值
     [arr3[i], arr3[j]] = [arr3[j], arr3[i]]
    }
  }
}
console.log(arr3);////[56, 34, 32, 23,22,  9,  8,  3]
  1. 反序排序(将数组元素翻转)
    内置方法reverse()
//内置方法reverse()
var arr1 = [12, 22, 34, 45, 66];
arr1.reverse();
console.log(arr1);
//[ 66, 45, 34, 22, 12 ]

非内置方法

var arr4 = [22, 34, 56, 78, 90, 111];
function rever(arr) {
  // console.log(arr);
  var right = 0;
  var left = arr.length - 1;
  // 循环语句,执行后返回继续判断知道不满足条件(区别于if语句,if只进行一次判断)
  while (right < left) {
    // 解构赋值
    [arr[right], arr[left]] = [arr[left], arr[right]];
    right++;
    left--;
  }
  console.log(arr);
}
rever(arr4);//[ 111, 90, 78, 56, 34, 22 ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值