JS实现的Object数组去重功能示例【数组成员为Object对象】


Posted in Javascript onFebruary 01, 2019

本文实例讲述了JS实现的Object数组去重功能。分享给大家供大家参考,具体如下:

目标:实现成员为 Object 的数组的去重。

注意,这里的数组成员为 Object,而不是数值或者字符串。

调用方法:

arr = distinct_arr_element(arr);

函数:

/*
 * 在数组中去除重复项()
 */
var distinct_arr_element = function( arr ){
  if( !arr ) return null ;
  var resultArr = [];
  $(arr).each( function( index, el ){
    var notExist = true ;
    $(resultArr).each( function(i,element){
      if( isObjectValueEqual( el, element ) ){
        notExist = false ;
        return false ;
      }
    });
    if( notExist )
      resultArr.push( el );
  });
  return resultArr ;
}
/*
 * 判断两个 Object 的值是否相等
 */
function isObjectValueEqual(a, b) {
  // Of course, we can do it use for in Create arrays of property names
  var aProps = Object.getOwnPropertyNames(a);
  var bProps = Object.getOwnPropertyNames(b);
  // If number of properties is different, objects are not equivalent
  if (aProps.length != bProps.length) {
    return false;
  }
  for ( var i = 0; i < aProps.length; i++ ) {
    var propName = aProps[i];
    // If values of same property are not equal, objects are not equivalent
    if (a[propName] !== b[propName]) {
      return false;
    }
  }
  // If we made it this far, objects are considered equivalent
  return true;
}

完整测试示例如下:

<script src="http://libs.baidu.com/jquery/2.0.3/jquery.min.js"></script>
<script>
/*
 * 在数组中去除重复项()
 */
var distinct_arr_element = function( arr ){
  if( !arr ) return null ;
  var resultArr = [];
  $(arr).each( function( index, el ){
    var notExist = true ;
    $(resultArr).each( function(i,element){
      if( isObjectValueEqual( el, element ) ){
        notExist = false ;
        return false ;
      }
    });
    if( notExist ) 
      resultArr.push( el );
  });
  return resultArr ;
}
/*
 * 判断两个 Object 的值是否相等
 */
function isObjectValueEqual(a, b) {
  // Of course, we can do it use for in Create arrays of property names
  var aProps = Object.getOwnPropertyNames(a);
  var bProps = Object.getOwnPropertyNames(b);
  // If number of properties is different, objects are not equivalent
  if (aProps.length != bProps.length) {
    return false;
  }
  for ( var i = 0; i < aProps.length; i++ ) {
    var propName = aProps[i];
    // If values of same property are not equal, objects are not equivalent
    if (a[propName] !== b[propName]) {
      return false;
    }
  }
  // If we made it this far, objects are considered equivalent
  return true;
}
var arrDemo=[{'name':'3water.com'},{'name':'3water.com'},{'age':10},{'age':12}];
console.log(distinct_arr_element(arrDemo))
</script>

使用在线HTML/CSS/JavaScript代码运行工具:http://tools.3water.com/code/HtmlJsRun测试上述代码,可得如下运行结果:

JS实现的Object数组去重功能示例【数组成员为Object对象】

Javascript 相关文章推荐
JavaScript Cookie显示用户上次访问的时间和次数
Dec 08 Javascript
使用JavaScript的ActiveXObject对象检测应用程序是否安装的方法
Apr 15 Javascript
JS 在指定数组中随机取出N个不重复的数据
Jun 10 Javascript
认识Knockout及如何使用Knockout绑定上下文
Dec 25 Javascript
jQuery选择器基础入门教程
May 10 Javascript
jquery动态切换背景图片的简单实现方法
May 14 Javascript
一种Javascript解释ajax返回的json的好方法(推荐)
Jun 02 Javascript
JS使用正则表达式提交页面验证的代码
Oct 16 Javascript
基于jQuery实现挂号平台首页源码
Jan 06 jQuery
javascript实现放大镜功能
Dec 09 Javascript
详解vue-cli项目在IE浏览器打开报错解决方法
Dec 10 Vue.js
Vue中使用import进行路由懒加载的原理分析
Apr 01 Vue.js
JavaScript动态创建二维数组的方法示例
Feb 01 #Javascript
Electron 如何调用本地模块的方法
Feb 01 #Javascript
详解使用webpack+electron+reactJs开发windows桌面应用
Feb 01 #Javascript
原来JS还可以这样拆箱转换详解
Feb 01 #Javascript
微信小程序拍照和摄像功能实现方法示例
Feb 01 #Javascript
微信小程序常用简易小函数总结
Feb 01 #Javascript
使用Angular自定义字段校验指令的方法示例
Feb 01 #Javascript
You might like
咖啡的种类和口感
2021/03/03 新手入门
备份mysql数据库的php代码(一个表一个文件)
2010/05/28 PHP
Zend Framework入门应用实例详解
2016/12/11 PHP
PHP给前端返回一个JSON对象的实例讲解
2018/05/31 PHP
PHP的new static和new self的区别与使用
2019/11/27 PHP
JavaScript入门学习书籍推荐
2008/06/12 Javascript
jQuery1.6 使用方法二
2011/11/23 Javascript
js图片向右一张张滚动效果实例代码
2013/11/23 Javascript
js实现上传图片预览的方法
2015/02/09 Javascript
获取阴历(农历)和当前日期的js代码
2016/02/15 Javascript
jQuery实现带延时功能的水平多级菜单效果【附demo源码下载】
2016/09/21 Javascript
基于nodejs 的多页面爬虫实例代码
2017/05/31 NodeJs
vue按需引入element Transfer 穿梭框
2017/09/30 Javascript
JS实现的简单表单验证功能完整实例
2017/10/14 Javascript
javascript匿名函数中的'return function()'作用
2018/10/15 Javascript
基于better-scroll 实现歌词联动功能的代码
2020/05/07 Javascript
JS中的变量作用域(console版)
2020/07/18 Javascript
在VUE中使用lodash的debounce和throttle操作
2020/11/09 Javascript
python安装与使用redis的方法
2016/04/19 Python
[原创]使用豆瓣提供的国内pypi源
2017/07/02 Python
Python数据分析之双色球统计两个红和蓝球哪组合比例高的方法
2018/02/03 Python
Django Celery异步任务队列的实现
2019/07/24 Python
python 实现识别图片上的数字
2019/07/30 Python
详解Python并发编程之从性能角度来初探并发编程
2019/08/23 Python
Python爬虫实现使用beautifulSoup4爬取名言网功能案例
2019/09/15 Python
Python paramiko使用方法代码汇总
2020/11/20 Python
python中四舍五入的正确打开方式
2021/01/18 Python
MAC彩妆英国官网:M·A·C UK
2018/05/30 全球购物
你在项目中用到了xml技术的哪些方面?如何实现的?
2014/01/26 面试题
市委常委班子党的群众路线教育实践活动整改措施
2014/10/02 职场文书
滴水洞导游词
2015/02/10 职场文书
互联网的下一个风口:新的独角兽将诞生
2019/08/02 职场文书
导游词之西安骊山
2019/12/03 职场文书
Java实现斗地主之洗牌发牌
2021/06/14 Java/Android
关于python爬虫应用urllib库作用分析
2021/09/04 Python
2022年四月新番
2022/03/15 日漫