javascript(es6)数组去重方法介绍(根据不同浏览器选择不同方法)

2024年11月27日 建站教程

今天web建站小编给大家介绍几种数组去重的方法,其中有es6语法写的,也有低版本浏览器兼容需要的写。

1、es6写法:利用Set去重(写法最简单,但不兼容低版本)

const arr = [1,1,'ok','mi',3,3,'ok','mi',5,5];
const setData = Array.from(new Set(arr));
console.log(setData);
//[1, 'ok', 'mi', 3, 5]

2、es6写法:利用includes去重

const arr = [1,1,'ok','mi',3,3,'ok','mi',5,5];
const removeRepeatData = (arr) => {
  let repeatArr = [];
  for (let i = 0,len = arr.length ; i < len; i++)
    if (!repeatArr.includes(arr[i])) repeatArr.push(arr[i])
  return repeatArr;
}
console.log(removeRepeatData(arr))
// [1, 'ok', 'mi', 3, 5]

3、es6写法:利用filter去重,(需要和indexOf一起用)

const arr = [1,1,'ok','mi',3,3,'ok','mi',5,5];
const removeRepeatData = (arr) => arr.filter((item,index) => arr.indexOf(item,0) === index);
console.log(removeRepeatData(arr))
// [1, 'ok', 'mi', 3, 5]

4、双重for循环去重(兼容低版本)

const arr = [1,1,'ok','mi',3,3,'ok','mi',5,5];
const removeRepeatData = (arr) => {
  for (let i=0,len = arr.length; i < len; i++) {
    for (let j = i + 1; j < len; j++) {
      if (arr[i] === arr[j]) {
        arr.splice(j, 1);
        j--;
        len--;
      }
    }
  }
  return arr;
};
console.log(removeRepeatData(arr))
// [1, 'ok', 'mi', 3, 5]

5、indexOf去重(兼容低版本最合适,比双重for循环简单)

const arr = [1,1,'ok','mi',3,3,'ok','mi',5,5];
const removeRepeatData = (arr) => {
  let repeatArr = [];
  for (let i = 0,len = arr.length ; i < len; i++) 
   if (repeatArr.indexOf(arr[i]) === -1)  repeatArr.push(arr[i])
  return repeatArr;
}
console.log(removeRepeatData(arr))
//[1, 'ok', 'mi', 3, 5]

本文链接:http://so.lmcjl.com/news/18576/

展开阅读全文
相关内容