zoukankan      html  css  js  c++  java
  • Js 的几种去重(一维)

    写的几种数组去重方法:

    第一种: [利用排序方法,然后比较当前元素与下一个元素是否相等]

    function repeat1(arr)
        {
            var length = arr.length;
            var result = [];
            arr.sort();//这里是关键
            for (var i = 0;i < length;i++) {
                if (arr[i] !== arr[i+1]) {
                    result.push(arr[i]);
                }
            }
            console.log(result);
        }

    第二种: [巧用一个indexOf方法来查找当前元素是否在一个字符串里.这里可以用array检索]

    function repeat2(arr)
        {
            var length = arr.length;
            var result = [];
            for (var i = 0;i < length;i++) {
                if (result.indexOf(arr[i]) === -1) {
                    result.push(arr[i]);
                }
            }
            console.log(result);
        }

    第三种: [利用一个obj的key-value唯一来达到去重]

    function repeat3(arr)
        {
            var length = arr.length;
            var result = [],
                obj = {};
            for (var i = 0;i < length;i++) {
                if ( ! obj[arr[i]]) {
                    obj[arr[i]] = 1;
                    result.push(arr[i]);
                }
            }
            console.log(result);
        }

    ----运行----

    var tmp_arr = [1, 'ddd', '哈', '哈', 'ddd', 'ddd', '2', '1', 'i', 'i', NaN, NaN];
        repeat1(tmp_arr);
        repeat2(tmp_arr);
        repeat3(tmp_arr);

    ----结果----

    总结:::

    这里的NaN是个非数字的特殊值, NaN === NaN 这里是为false , 所以一二种会有两个NaN;

    1与"1" 是类型不同的数, 所有也会有一二种方法也会有两个数值;

    最后一个方法是一个key-value 自然key是唯一的, 举个例子就会明白了-->>console.log({1:'wherein',"1":'wherein'});你看这里输出的是什么???  没错, 就是一个Object {1: "11"} , 这道理跟第三种的一样

    {适合的可以参考下, 有错的希望能指出下[抱拳]}

  • 相关阅读:
    报表图片不显示的问题(一)
    数据库时区问题
    变色
    给div加滚动条,当内容超过它的范围的时候
    Apple Style Effect
    easyui发生重叠现象的原因
    mysql 获取字符串长度
    纯css的带下拉菜单的导航条
    jQuery验证控件jquery.validate.js使用说明+中文API
    background-position 用法详细介绍
  • 原文地址:https://www.cnblogs.com/wherein/p/6872585.html
Copyright © 2011-2022 走看看