亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

JS實(shí)現(xiàn)的Object數(shù)組去重功能示例【數(shù)組成員為Object對(duì)象】

 更新時(shí)間:2019年02月01日 14:45:21   作者:lmn13  
這篇文章主要介紹了JS實(shí)現(xiàn)的Object數(shù)組去重功能,可實(shí)現(xiàn)針對(duì)數(shù)組成員為Object對(duì)象的去重復(fù)功能,涉及javascript數(shù)組元素遍歷、屬性判斷等相關(guān)操作技巧,需要的朋友可以參考下

本文實(shí)例講述了JS實(shí)現(xiàn)的Object數(shù)組去重功能。分享給大家供大家參考,具體如下:

目標(biāo):實(shí)現(xiàn)成員為 Object 的數(shù)組的去重。

注意,這里的數(shù)組成員為 Object,而不是數(shù)值或者字符串。

調(diào)用方法:

arr = distinct_arr_element(arr);

函數(shù):

/*
 * 在數(shù)組中去除重復(fù)項(xiàng)()
 */
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 ;
}
/*
 * 判斷兩個(gè) 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;
}

完整測(cè)試示例如下:

<script src="http://libs.baidu.com/jquery/2.0.3/jquery.min.js"></script>
<script>
/*
 * 在數(shù)組中去除重復(fù)項(xiàng)()
 */
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 ;
}
/*
 * 判斷兩個(gè) 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代碼運(yùn)行工具http://tools.jb51.net/code/HtmlJsRun測(cè)試上述代碼,可得如下運(yùn)行結(jié)果:

PS:這里再為大家提供幾款相關(guān)工具供大家參考使用:

在線去除重復(fù)項(xiàng)工具:
http://tools.jb51.net/code/quchong

在線文本去重復(fù)工具:
http://tools.jb51.net/aideddesign/txt_quchong

更多關(guān)于JavaScript相關(guān)內(nèi)容還可查看本站專題:《JavaScript數(shù)組操作技巧總結(jié)》、《JavaScript字符與字符串操作技巧總結(jié)》、《JavaScript遍歷算法與技巧總結(jié)》、《JavaScript查找算法技巧總結(jié)》、《JavaScript數(shù)學(xué)運(yùn)算用法總結(jié)》、《JavaScript數(shù)據(jù)結(jié)構(gòu)與算法技巧總結(jié)》及《JavaScript錯(cuò)誤與調(diào)試技巧總結(jié)

希望本文所述對(duì)大家JavaScript程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • Javascript中的Prototype到底是什么

    Javascript中的Prototype到底是什么

    Javascript也是面向?qū)ο蟮恼Z(yǔ)言,但它是一種基于原型Prototype的語(yǔ)言,而不是基于類的語(yǔ)言。接下來(lái)通過(guò)本文給大家介紹Javascript中的Prototype到底是啥的相關(guān)知識(shí),感興趣的朋友參考下
    2016-02-02
  • 對(duì)于JavaScript繼承你到底了解多少

    對(duì)于JavaScript繼承你到底了解多少

    js的繼承機(jī)制不同于傳統(tǒng)的面向?qū)ο笳Z(yǔ)言,采用原型鏈實(shí)現(xiàn)繼承,基本思想是利用原型讓一個(gè)引用類型繼承另一個(gè)引用類型的屬性和方法,下面這篇文章主要給大家介紹了關(guān)于JS繼承的相關(guān)資料,需要的朋友可以參考下
    2021-09-09
  • 解決function函數(shù)內(nèi)的循環(huán)變量

    解決function函數(shù)內(nèi)的循環(huán)變量

    鼠標(biāo)放到指定的行上自動(dòng)彈出當(dāng)前的個(gè)數(shù),從0開(kāi)始,這個(gè)功能方便我們?cè)趖ab切換中定位
    2008-10-10
  • 如何在CocosCreator里畫(huà)個(gè)炫酷的雷達(dá)圖

    如何在CocosCreator里畫(huà)個(gè)炫酷的雷達(dá)圖

    這篇文章主要介紹了如何在CocosCreator里畫(huà)個(gè)炫酷的雷達(dá)圖,對(duì)Graphics感興趣的同學(xué),一定要看看,并且把代碼實(shí)踐一下
    2021-04-04
  • 淺談如何循序漸進(jìn)的學(xué)好JS

    淺談如何循序漸進(jìn)的學(xué)好JS

    如何才能學(xué)好JS?在這里給大家總結(jié)一些學(xué)習(xí)Js的經(jīng)驗(yàn),希望能對(duì)你們有所幫助。
    2021-05-05
  • JavaScript實(shí)現(xiàn)復(fù)制內(nèi)容到粘貼板代碼

    JavaScript實(shí)現(xiàn)復(fù)制內(nèi)容到粘貼板代碼

    最近做了一個(gè)前端項(xiàng)目,其中有需求:通過(guò)button直接把input或者textarea里的值復(fù)制到粘貼板里。下面小編給大家分享JavaScript實(shí)現(xiàn)復(fù)制內(nèi)容到粘貼板代碼,需要的朋友參考下
    2016-03-03
  • 淺談es6中的元編程

    淺談es6中的元編程

    這篇文章主要介紹了淺談es6中的元編程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • js簡(jiǎn)單實(shí)現(xiàn)標(biāo)簽云效果實(shí)例

    js簡(jiǎn)單實(shí)現(xiàn)標(biāo)簽云效果實(shí)例

    這篇文章主要介紹了js簡(jiǎn)單實(shí)現(xiàn)標(biāo)簽云效果,基于miaov.js文件實(shí)現(xiàn)標(biāo)簽云的3D滾動(dòng)效果,非常簡(jiǎn)單實(shí)用,需要的朋友可以參考下
    2015-08-08
  • JavaScript 函數(shù)式編程實(shí)踐(來(lái)自IBM)

    JavaScript 函數(shù)式編程實(shí)踐(來(lái)自IBM)

    說(shuō)到函數(shù)式編程,人們的第一印象往往是其學(xué)院派,晦澀難懂,大概只有那些蓬頭散發(fā),不修邊幅,甚至有些神經(jīng)質(zhì)的大學(xué)教授們才會(huì)用的編程方式。
    2010-06-06
  • 如何使用JavaScript和XLSX.js將數(shù)據(jù)導(dǎo)出為Excel文件

    如何使用JavaScript和XLSX.js將數(shù)據(jù)導(dǎo)出為Excel文件

    這篇文章主要給大家介紹了關(guān)于如何使用JavaScript和XLSX.js將數(shù)據(jù)導(dǎo)出為Excel文件的相關(guān)資料,xlsx.js基于JavaScript的Excel文件讀寫(xiě)庫(kù) 如果你需要在瀏覽器端處理Excel文件,那么xlsx.js可能是一個(gè)不錯(cuò)的選擇,需要的朋友可以參考下
    2024-05-05

最新評(píng)論