美文网首页
数组去重方法集合

数组去重方法集合

作者: 转移到CSDN名字丹丹的小跟班 | 来源:发表于2021-02-20 10:39 被阅读0次
1.for循环 + indexOf() + push()
function goRepeat(arr) {
  let newArr = [];
  for (var i = 0; i < arr.length; i++) {
    //将数组的每一项与新数组进行indexOf查询,若没有则添加进新数组,若有则不管
    if (newArr.indexOf(arr[i]) == -1) {
      //不包含该值则返回-1
      newArr.push(arr[i]);
    }
  }
  return newArr
}
2. for循环 + indexOf() + push()
function goRepeat(arr) {
  let newArr = [];
  for (var i = 0; i < arr.length; i++) {
    //如果当前数组的第i项在当前数组中第一次出现的位置不是i,
    //那么表示第i项是重复的,忽略掉。否则存入结果数组 
    if (arr.indexOf(arr[i]) == i) {
      newArr.push(arr[i]);
    }
  }
  return newArr;
}
3. for循环 + sort() + push()
function goRepeat(arr) {
  // 先将数组进行排序,目的是将相同的元素放在一起
  let arrSort = arr.sort();
  let newArr = [];
  for (let i = 0; i < arrSort.length; i++) {
    // 判断两两之间的元素是否相等。不等则加入新数组,相等则不管
    if (arrSort[i] != arrSort[i + 1]) {
      newArr.push(arrSort[i]);
    }
  }
  return newArr;
}
4. 双重for循环 + splice()
function goRepeat(arr) {
  let len = arr.length
  // 尽量不改变原数组
  let newArr = [...arr]
  for (let i = 0; i < len; i++) {
    for (let j = i + 1; j < len; j++) {
      // 判断其余数组元素与第一个for循环的当前数组元素是否相等,相等则删除元素,
      // 防止数组塌陷,需要进行--操作
      if (newArr[i] === newArr[j]) {
        newArr.splice(i, 1);
        len--;
        j--;
      }
    }
  }
  return newArr
}
5. es6剩余运算符'... ' + new Set()
function goRepeat(arr) {
  let newArr = Array.from(new Set(arr))
  return newArr
}
6. includes() + push()
function goRepeat(arr) {
  var newArr = [];
  for (var i = 0; i < arr.length; i++) {
    if (!newArr.includes(arr[i])) {
      //检测新数组是否有某个值,无则添加,有则不管
      newArr.push(arr[i]);
    }
  }
  return newArr;
}
7. hasOwnProperty() + filter() + typeof
function goRepeat(arr) {
  var obj = {};
  return arr.filter(function (item, index, arr) {
//将值的类型和值当作对象属性,不存在则添加属性,存在则不管
    return obj.hasOwnProperty(typeof item + item)
      ? false
      : (obj[typeof item + item] = true);
  });
}
8. indexOf() + filter()
function goRepeat(arr) {
  return arr.filter(function (item, index, arr) {
    //当前元素在原始数组中的第一个索引===当前索引值,则返回当前元素
    return arr.indexOf(item) === index;
  });
}
9. reduce() + includes()
function goRepeat(arr) {
   return arr.reduce((prev,cur) => prev.includes(cur) ? prev : [...prev,cur],[]);
}

相关文章

  • js算法题

    1.数组去重 方法一:利用嵌套for循环和splice去重 方法二:利用indexOf去重 方法三:利用Set集合...

  • 数组去重方法集合

    1.for循环 + indexOf() + push() 2. for循环 + indexOf() + push(...

  • ES6数组去重

    普通数组去重 方法1 方法2 对象数组去重

  • iOS面试题整理

    1、数组去重的方法: (1)原来集合操作可以通过valueForKeyPath来实现的,去重可以一行代码实现(顺序...

  • js数组去重、对象数组去重

    普通数组去重 一、普通数组去重 方法一:遍历数组法 方法二:排序法 方法三:对象法 对象数组去重 方法一:将对象数...

  • Array集结号

    实现数组去重的几种方法 数组去重一 数组去重二 利用数组indexof+push实现数组去重 数组去重三 利用对象...

  • 数组

    数组 数组常用方法 数组去重

  • 数组去重

    分类 非对象数组去重 对象数组去重 分类一 --- 非对象数组去重 方法一: set(es6常用) 方法二:red...

  • 数组对象去重方法:

    数组对象去重方法: // 数组对象去重 ```` toRetry = (arr = []) => { let re...

  • js:数组去重

    数组去重的常见写法: 数组去重封装成方法: es6的数组去重(Array.from):

网友评论

      本文标题:数组去重方法集合

      本文链接:https://www.haomeiwen.com/subject/iqrtfltx.html