美文网首页
如何将一个数组去重

如何将一个数组去重

作者: 陈学谦_ | 来源:发表于2017-05-19 01:07 被阅读56次

一、废话开头

相信大家再面试时都有遇到过这个问题——“如何将一个数组去重”。这近两个月的招聘中我已经三次被问到这个问题了。第一次如果我没记错的话是百度的笔试遇的;第二次是做一家创业公司的笔试题遇的;第三次是面试另一家创业公司遇到的。

二、正文

采用平稳退化的方法来叙述我的方法吧。

1. ES2015

// 原数组
let arr = [1, 3, 3, 4, 2, 3, 5, 6, 4, 2, 11, 7, 5, 4, 6];

// 创建数组对应的Set对象
let arr_set = new Set(arr);

// 将Set对象转化为数组
Array.from(arr_set); // [1, 3, 4, 2, 5, 6, 11, 7]

代码中用到的SetArray.from均为ES2015标准中新定义的特性。当然,let也是ES2015中的。

这个方法绝对是最酷的,最快捷的,每次遇到这题的时候我都会使用这个方法,没有什么原因,就是很酷。

关于Set的用法请见MDN

2. ES5.1 & 对象键值

var arr = [1, 3, 3, 4, 2, 3, 5, 6, 4, 2, 11, 7, 5, 4, 6];

var obj = [];

// 将数组元素作为键值
arr.forEach(function (item) {
  obj[item] = null;
});
// 得到由对象键值组成的数组
arr = Object.keys(obj);
// 但是此时元素是string,还需转为number
arr.forEach(function (item, i) {
  arr[i] = Number(item);
});

arr; // [1, 2, 3, 4, 5, 6, 7, 11]

代码中用到的Array.prototype.forEachObject.keys均为ES5.1中的新特性。

这个方法应该是除了方法1以外最酷的方法了吧。晗哥当时面试时就用的这个方法,至于为什么没用方法1?因为面试官不让用ES6 = =。

3. 遍历

代码就不贴了,原理大家都懂。

相关文章

  • 前端常见面试题(十)

    目录: 1,简述同步和异步的区别 2, 数组去重(手写代码) 3, 在JavaScript中什么是伪数组?如何将伪...

  • 数组去重的四种方法

    利用双for循环去重 利用对象数组去重 利用对象数组去重并且记录重复次数 通过创建一个新数组进行数组去重

  • Array集结号

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

  • 如何将一个数组去重

    一、废话开头 相信大家再面试时都有遇到过这个问题——“如何将一个数组去重”。这近两个月的招聘中我已经三次被问到这个...

  • 实现数组去重有哪些方式

    简单的数组去重 数组对象去重

  • lodash 常用方法

    数组对象根据某一个值去重 数组去重 两个数组对象对比根据某一个值去重 若干数组并集,交集,补集 陆续更新

  • JavaScript 数组去重的多种方法原理详解

    JavaScript 数组去重的多种方法原理详解 说明 数组去重,这是一个面试经常会遇见的问题,网上讲数组去重的文...

  • 数组对象去重的常见操作

    前言: 数组对象去重与数组去重的不同点在于,数组对象需要指定一个属性(key值)再进行去重。 1.数组对象的自定义...

  • js常用方法

    类型判断 数组 对象 去重方法(一) 数组 对象 去重方法(二) 数组(字符串)一个元素出现的次数 删除数组中一个...

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

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

网友评论

      本文标题:如何将一个数组去重

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