zoukankan      html  css  js  c++  java
  • $.unique() 对象组成的数组去掉重复对象

    发现一件事,一个完全由对象组成的数组,用$.unique()方法去掉重复的时候不管用

    1 var arr = [{text:'第一个',value:'1'},{text:'第二个',value:'2'},{text:'第三个',value:'3'},{text:'第一个',value:'1'},{text:'第二个',value:'2'},{text:'第三个',value:'3'}]

    假设用 arr = $.unique(arr),这种方法处理一下,去掉重复的对象,结果返回的还是arr 原来的模样,长度位6,并没有去掉重复啊。

    百思不得其解,查好长时间api才看明白

    原来, 此功能只适用于普通的JavaScript DOM元素的数组,主要是jQuery内部使用。

    说白了,只能遍历基本的数据类型吧,识别object还是有难度的。

    那没办法咯,只能给他们每一个对象变成字符串,然后去掉重复,然后再给每一个字符串转成对象啦,最后拼成对象。

    具体的代码如下:

    var arr = [{text:'第一个',value:'1'},{text:'第二个',value:'2'},{text:'第三个',value:'3'},{text:'第一个',value:'1'},{text:'第二个',value:'2'},{text:'第三个',value:'3'}];
    //arr = $.unique(arr);// 首先用 $.unique() 方法去掉重复一遍,然而并没什么卵用
    console.log(arr);//看一下原来的数组
    var arrResult = [];
    for(var i=0;i<arr.length;i++){
        arr[i] = JSON.stringify(arr[i]);//对象转成字符串的方法
        arrResult.push(arr[i]);//重新填装成一个《字符串》组成的数组
    }
    arr = [];//清空原来的数据
    arrResult = $.unique(arrResult); // 去掉重复的字符串
    for(var j=0;j<arrResult.length;j++){
        arrResult[j] = JSON.parse(arrResult[j]);// 重新给字符串转换成对象
        arr.push(arrResult[j]);//重新填装成一个《对象》组成的数组
    }
    console.log(arr);//看一下组装后的数组

    最后的结果:

    成功啦,成功喽!!!!

  • 相关阅读:
    注册tomcat为服务
    BootStrap
    Passive DNS
    一个插件平台
    HDU 4394 BFS
    设计模式--组合模式--商品排序案例
    Windows平台编译openssl-0.9.8k库(32位、64位)
    JavaScript之this释疑
    OpenLayers3基础教程——OL3 介绍control
    我的Android进阶之旅------&gt; Android为TextView组件中显示的文本加入背景色
  • 原文地址:https://www.cnblogs.com/Sinhtml/p/5903724.html
Copyright © 2011-2022 走看看