美文网首页
前端面试题之数组去重

前端面试题之数组去重

作者: 汶沐 | 来源:发表于2019-10-29 22:10 被阅读0次

// 可以在函数刚开始时,添加个鉴别参数是否为数组

if (!Array.isArray(arr)) {
console.log('type error!')
return
}

1、Es6 Set

function unique (arr) {
  return Array.from(new Set(arr))
  // Array.from()方法就是将一个类数组对象或者可遍历对象转换成一个真正的数组
}

代码最少,但缺点是无法去掉{}空对象。

2、for嵌套for,再splice

function unique(arr) {
  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--;
      }
    }
  }
  return arr;
}

3、indexOf

function unique(arr) {
  var array = [];
  for(var i=0;i<arr.length;i++) {
    if(array.indexOf(arr[i]) === -1){
      array.push(arr[i])
    }
  }
  return array;
}

4、sort()

function unique(arr) {
  arr = arr.sort()  //对数组进行排序
  var array = [arr[0]];
  for (var i=1;i<arr.length;i++) {
    if (arr[i] !== arr[i-1]) { //与相邻元素对比
      array.push(arr[i]);
    }
  }
  return array;
}

5、includes

function unique(arr) {
  var array = [];
  for(var i=0;i<arr.length;i++) {
    if(!array.includes(arr[i])) {  //includes 检验数组是否含有某个值
      array.push(arr[i]);
    }
  }
  return array
}

6.[…new Set(arr)]

  […new Set(arr)] // []和...都不能省去,相当于简化了第一种方法
谢谢

相关文章

  • 2020-01-19做些js的数组练习吧

    1.前端面试必问之数组去重 前端面试必问之数组去重 2.前端面试必问之深拷贝浅拷贝 3.

  • 前端面试题之数组去重

    // 可以在函数刚开始时,添加个鉴别参数是否为数组 1、Es6 Set 代码最少,但缺点是无法去掉{}空对象。 2...

  • 数组去重,数据合并,数组合并去重等ES6语法

    数组去重 数组合并 数组合并去重 淘宝首页到底用了多少种标签(面试题) 对象合并 数组合并替换

  • 前端数组去重

  • 2018-5-31 JavaScript面试题

    前端面试题,保持更新...... 一、数组去重 1.1 常规方法 1.2 ES6新特性 二、去除字符串中的空格 2...

  • 前端的数组去重

    1.思路:先定义一个“新数组”,并存放“源数组”(待去重的数组,以下简称源数组)的第一个元素,然后将源数组和新数组...

  • web前端-数组去重

    方式一, 借助ES6的Map, 因为Map不会出现重复的key, 后添加的key-value会把之前的覆盖 方式二...

  • 前端算法题收集

    数组去重和排序的多种实现算法 数组扁平化的N种实现方案 阿里面试题之斐波那契数列 字节跳动经典算法题

  • JavaScript 数组去重

    来自百度前端学院IFE 要求:对数组进行去重操作,只考虑数组中元素为数字或字符串,返回一个去重后的数组 代码如下:...

  • 数组去重

    数组去重 数组去重是前端笔试或面试中经常出现的一道题,伴随着 ECMAScript(后文缩写为 ES) 的发展,它...

网友评论

      本文标题:前端面试题之数组去重

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