zoukankan      html  css  js  c++  java
  • js去重的两种方法

    去重

    去重方法和思路也很多,这里就介绍两种吧。

    方法一:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function unique1(arr) {
     
        var res = [],
            len = arr.length;
        for (var i = 0; i < len; i++) {
            if (res.indexOf(arr[i]) == -1) {
                res.push(arr[i]);
            }
        }
        return res;
    }

    思路:利用了数组的indexOf()方法,此方法的目的是寻找存入参数在数组中第一次出现的位置,如果结果返回-1,说明还不存在,于是就可以保存起来了。实现这个方法的时候会遍历数组直到找到目标为止,比较耗时,速度方面要比借助hash表来实现慢。下文即将介绍~

    方法二:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function unique2(arr) {
        var res = [],
            hash = {},
            len = arr.length;
        for (var i = 0; i < len; i++) {
            if (!hash[arr[i]]) {//如果不存在
                hash[arr[i]] = true;//记录下来
                res.push(arr[i]);//保存起来
            }
        }
        return res;
    }

    思路:将数组中的值通过作为下标(key)的形式存入一个Object内,利用这个加以判断,最后达到去重目的。这里有必再写详细一点,因为最初的时候有点懵逼,一时没看懂,定义了一个对象hash={},然后判断的时候又是这样写hash[],让人感觉又有点像数组。。。其实很好理解的。先来看个小例子:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    var hash = {
        "name": "xiaojiecong",
        "sex": "male"
    };
     
    console.log(hash.name);
    console.log(hash.sex);
     
    console.log(hash["name"]);
    console.log(hash["sex"]);

    其实想说明就是,有两种方式能得到对象字面量中的某个键名(key)的键值(value),第一种是用点连接,第二种是用中括号,所以看到上面hash[]这样写也不会觉得奇怪了。用点连接或中括号,这个也适用于元素操作属性这种场景,比如:

    1
    2
    3
    4
    document.getElementsByTagName('div')[0].style.display = 'block';
    document.getElementsByTagName('div')[0].style['display'] = 'block';
    document.getElementsByTagName('input')[0].value ='123';
    document.getElementsByTagName('input')[0]['value'] ='123';

    这里解释太多,好像有点啰嗦了 - -!

  • 相关阅读:
    多级菜单 menu
    PHP 在线 编辑 解析
    [转]在PHP语言中使用JSON
    [转]SSIS ADO.NET vs OLEDB
    [转]SSIS高级转换任务—在Package中是用临时表是需要设置RetainSameConnection属性
    [转]SSIS高级转换任务—行计数
    [转]SSIS Recordset Destination
    [转]SSIS: By coding
    [转]SSIS cannot convert between unicode and non-unicode string
    [转]How to handle Failed Rows in a Data Flow
  • 原文地址:https://www.cnblogs.com/moxiaowohuwei/p/7448891.html
Copyright © 2011-2022 走看看