JS实现的Object数组去重功能示例【数组成员为Object对象】
程序员文章站
2023-11-17 09:39:28
本文实例讲述了js实现的object数组去重功能。分享给大家供大家参考,具体如下:
目标:实现成员为 object 的数组的去重。
注意,这里的数组成员为 object...
本文实例讲述了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':'jb51.net'},{'name':'jb51.net'},{'age':10},{'age':12}]; console.log(distinct_arr_element(arrdemo)) </script>
使用在线html/css/javascript代码运行工具:http://tools.jb51.net/code/htmljsrun测试上述代码,可得如下运行结果:
ps:这里再为大家提供几款相关工具供大家参考使用:
在线去除重复项工具:
在线文本去重复工具:
更多关于javascript相关内容还可查看本站专题:《javascript数组操作技巧总结》、《javascript字符与字符串操作技巧总结》、《javascript遍历算法与技巧总结》、《javascript查找算法技巧总结》、《javascript数学运算用法总结》、《javascript数据结构与算法技巧总结》及《javascript错误与调试技巧总结》
希望本文所述对大家javascript程序设计有所帮助。