首頁  >  文章  >  web前端  >  JS實現去除數組中重複項功能

JS實現去除數組中重複項功能

小云云
小云云原創
2018-01-18 13:22:521706瀏覽

本文主要介紹了JS基於物件的特性實現去除數組中重複項功能,結合實例形式較為詳細的分析了js基於key值唯一性實現數組去重的具體步驟與相關操作技巧,需要的朋友可以參考下,希望能幫助大家。

本文實例講述了JS基於物件的特性實現去除數組中重複項功能。分享給大家供大家參考,具體如下:

陣列去重的方法有很多,不同的方法的效率也不相同。如前面文章JS實作的陣列去除重複資料演算法小結中就總結分析了4種實作方法。這裡介紹一種高效能數組去重的方法:根據JS物件的特性去除數組中重複項的方法。

一、JS物件的特性(本文所使用的特性):key總是唯一

引言:說明物件key值的唯一性,也就是當重新給js已有屬性賦值的時候,其實是覆寫了key,而不是新建了key


var t={name:'张三',age:20};//定义个js对象
console.log(t.name);//控制台输出:张三
//注意:此时对象t有两个属性:name、age
t.name='李四';
console.log(t.name);//控制台输出:李四
//注意:此时对象t依然有两个属性:name、age

二、陣列去重步驟解析

分成兩個步驟:

1. 把要去重的陣列轉換成一個js的物件並回傳。 轉換規則:把陣列中的值變成js物件當中的key,然後value給任意值;

2. 把步驟1中的物件再還原成數組,物件的key作為數組中的元素。

三、陣列去重實作


#
var arr=[1,2,3,4,5,23,4,2,4,3];
//1.把数组装换成对象,数组的元素作为对象的key,然后返回对象
function toObject(ac_array){
    var obj={};//私有的对象
    for (var i=0;i<ac_array.length;i++) {
      obj[ac_array[i]] = true;
    }
    console.log(obj);//Object {1: true, 2: true, 3: true, 4: true, 5: true, 23: true}
    return obj;
}
//2.把对象的key获取出来作为数组的元素,然后返回数组
function keys(ac_obj){
    var arr = [];
    for(var item in ac_obj){
      if(ac_obj.hasOwnProperty(item)){
        arr.push(item);
      }
    }
    console.log(arr);//["1", "2", "3", "4", "5", "23"]
    return arr;
}
//综合
function uniq(ac_array){
    return keys(toObject(ac_array));
}
//测试
var uniq_array=uniq(arr);
console.log(uniq_array);//["1", "2", "3", "4", "5", "23"]

程式碼測試結果:

相關推薦:

PHP二維陣列如何實現移除重複項

java資料結構與演算法之noDups去除重複項演算法範例

PHP二維數組去重複項自訂函數_PHP教程

以上是JS實現去除數組中重複項功能的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn