数组去重(只讲两种方法)

数组去重的方法有很多,每个人都有自己喜欢用的方法,这里说两种我自己觉得比较简洁高效的方法,当然很多人都知道这些。

方法一

Array.prototype.unique = function(){
    var obj = {};
    var arr = [];
    var len = this.length;

    for(var i=0;i<len;i++){
        if(!obj[this[i]]){
            obj[this[i]] = ‘a‘;
            arr.push(this[i]);
        }
    }

    return arr;

}

此方法利用对象属性名不能重复的性质,将数组值遍历到对象的属性上,如果属性名的属性值已存在,则忽略,如果属性值不存在,则添加新属性,并赋值(注意赋的值不能为假),然后将这个属性名push到新数组里,遍历结束,返回新数组。

方法二

Array.prototype.unique = function(){
    return Array.from(new Set(this))
}

ES6的出现使代码简洁高效了很多,这里用到两种ES6的方法。

ES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。

同时ES6为数组新增了Array.from方法,用于将两类对象转为真正的数组:类似数组的对象(array-like object)和可遍历(iterable)的对象(包括 ES6 新增的数据结构 Set 和 Map)。

new Set可以将数组转化为Set数据结构,并去重,如:

new Set([1,2,3,3])

//{1, 2, 3}

再用Array.from将Set转回为数组

原文地址:https://www.cnblogs.com/wjaaron/p/8277884.html

时间: 2024-10-10 13:48:03

数组去重(只讲两种方法)的相关文章

实现数组字符串翻转的两种方法

//第一种方法:递归法 #include <stdio.h> int reverse_string(char * string) {  if (*string != '\0')  {      reverse_string(string+1);      printf("%c", *string);  } } int main() {  char *string = "abcde";  printf("源字符串为:%s\n", str

JavaScript中遍历数组中元素的两种方法

2015-03-27 20:02:20 <!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="Generator" content="EditPlus®"> <meta name="Author" content="">

javascript 判断数组中的重复内容的两种方法 by FungLeo

javascript 判断数组中的重复内容的两种方法 by FungLeo 前言 一般,我们可能会给数组去重,这个操作并不复杂,执行一个循环就是了.现在,我要做的是,判断数组中是否有重复的内容,如果有,返回 true 否则,返回 false. 思路 把数组变成字符串 循环原数组,拿每一个字段和这个字符串进行比对,看是否有重复 如何拿A字符串和B字符串进行对比,并且要求判断出B字符串中包含过个A字符串呢? 方法一 indexOf() 和 lastIndexOf() 对比法. 首先,我们构建代码:

PHP中数组合并的两种方法及区别介绍

PHP数组合并两种方法及区别 如果是关联数组,如下: 复制代码代码如下: $a = array( 'where' => 'uid=1', 'order' => 'uid', ); $b = array( 'where' => 'uid=2', 'order' => 'uid desc', ); 1. array_merge,如果两个数组存在相同的key,后面的一个会覆盖前面的 复制代码代码如下: <?php $c = array_merge($a, $b); var_expo

归并排序,树状数组 两种方法求逆序对

我们知道,求逆序对最典型的方法就是树状数组,可是另一种方法就是Merge_sort(),即归并排序. 实际上归并排序的交换次数就是这个数组的逆序对个数,为什么呢? 我们能够这样考虑: 归并排序是将数列a[l,h]分成两半a[l,mid]和a[mid+1,h]分别进行归并排序,然后再将这两半合并起来. 在合并的过程中(设l<=i<=mid,mid+1<=j<=h).当a[i]<=a[j]时.并不产生逆序数:当a[i]>a[j]时.在 前半部分中比a[i]大的数都比a[j]

OC中动态创建可变数组的问题.有一个数组,数组中有13个元素,先将该数组进行分组,每3个元素为一组,分为若干组,最后用一个数组统一管理这些分组.(要动态创建数组).两种方法

<span style="font-size:24px;">//////第一种方法 // NSMutableArray *arr = [NSMutableArray array]; // for (int i = 0; i < 13; i ++) { // [arr addObject:[NSString stringWithFormat:@"lanou%d",i + 1]]; // } // NSLog(@"%@",arr);

[Arduino] 逗号分隔文本到数组的两种方法

以下是今日练习通过逗号来分割字符数组/字符串的2个例子和方法" 1.通过indexOf函数 /* *Splitsplit sketch *split a comma-separated string */ String message = "Peter,Paul,Mary"; int commaPosition; void setup(){ Serial.begin(9600); } void loop(){ Serial.println(message); do{ comm

python将两个数组合并成一个数组的两种方法的代码

内容过程中,把写内容过程中常用的内容收藏起来,下面的资料是关于python将两个数组合并成一个数组的两种方法的内容,希望能对小伙伴们有帮助. c1 = ["Red","Green","Blue"]c2 = ["Orange","Yellow","Indigo"]c1.extend(c2) assert c1 == ["Red","Green",&q

python遍历数组的两种方法的代码

工作过程中,把开发过程中较好的一些内容段备份一下,下面内容是关于python遍历数组的两种方法的内容,希望对小伙伴有用途. colours = ["red","green","blue"] for colour in colours: print colour # red # green # blue 下面的方法可以先获得数组的长度,然后根据索引号遍历数组,同时输出索引号 colours = ["red","gree