首頁 web前端 js教程 js數組去重的方法匯總_javascript技巧

js數組去重的方法匯總_javascript技巧

May 16, 2016 pm 03:48 PM
數組去重

三種方法

利用indexOf判斷新陣列

underscore.js中其實也是使用的類似的indexOf

 //传入数组
 function unique1(arr){
  var tmpArr = [];
  for(var i=0; i<arr.length; i++){
   //如果当前数组的第i已经保存进了临时数组,那么跳过,
   //否则把当前项push到临时数组里面
   if(tmpArr.indexOf(arr[i]) == -1){
    tmpArr.push(arr[i]);
   }
  }
  return tmpArr;
 }
登入後複製

利用indexOf判斷舊數組

 function unique2(arr){
  var tmpArr = []; //结果数组
  for(var i=0; i<arr.length; i++){
   //如果当前数组的第i项在当前数组中第一次出现的位置不是i,
   //那么表示第i项是重复的,忽略掉。否则存入结果数组
   if(arr.indexOf(arr[i]) == i){
    tmpArr.push(arr[i]);
   }
  }
  return tmpArr;
 }

登入後複製

利用hash查找

這裡利用了JS物件的實作就是hash表的特性

 function unique3(arr){
  var tmpArr = [], hash = {};//hash为hash表
  for(var i=0;i<arr.length;i++){
   if(!hash[arr[i]]){//如果hash表中没有当前项
    hash[arr[i]] = true;//存入hash表
    tmpArr.push(arr[i]);//存入临时数组
   }
  }
  return tmpArr;
 }
登入後複製

陣列擴充

 Array.prototype.unique1 = function (){
  var tmpArr = []; 
  for (var i = 0; i < this.length; i++){
   if (tmpArr.indexOf(this[i]) == -1){
    tmpArr.push(this[i]);
   }
  }
  return tmpArr;
 }

 Array.prototype.unique2 = function(){
   var tmpArr = []; //结果数组
   for(var i = 0; i < this.length; i++){
    if (this.indexOf(this[i]) == i){
     tmpArr.push(this[i]);
    }
   }
   return tmpArr;
 }

 Array.prototype.unique3 = function(){
   var tmpArr=[], hash = {};
   for(var i = 0; i < this.length; i++){
    if (!hash[this[i]]){
      hash[this[i]] = true; 
      tmpArr.push(this[i]); 
    }
   }
   return tmpArr;
 }

登入後複製

使用Set

Set和Map是ES6新增的資料結構
Set直接可以儲存不重複的一組key,這個key也可以是物件,字串等
建立set

var s = new Set([1, 2, 3,]);
s; // Set {1, 2, 3}

登入後複製

新增元素

>>> s.add(4)
>>> s
{1, 2, 3, 4}
>>> s.add(4)
>>> s
{1, 2, 3, 4}//重复元素不会被添加

登入後複製

刪除元素

s; // Set {1, 2, 3, 4}
s.delete(3);
s; // Set {1, 2, 4}

登入後複製

遍歷元素

Map和Set無法使用下標
ES6標準引進了新的iterable類型,Array、Map和Set都屬於iterable類型

var s = new Set(['A', 'B', 'C']);

for (var x of s) { // 遍历Set
  alert(x);
}

登入後複製

或直接使用iterable內建的forEach方法
forEach方法是ES5.1標準引入的

var s = new Set(['A', 'B', 'C']);
s.forEach(function (element, set) {
  alert(element);
});
登入後複製

以上所述就是本文的全部內容了,希望大家能夠喜歡。

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

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

PHP 陣列去重時指定移除重複元素的依據 PHP 陣列去重時指定移除重複元素的依據 Apr 28, 2024 pm 10:48 PM

PHP的array_unique()函數用來移除陣列中重複元素,其預設使用嚴格相等(===)。我們可以透過自定比較函數來指定去重依據:建立自定比較函數,指定去重的標準(例如根據元素長度);將自訂比較函數作為第三個參數傳遞給array_unique()函數,即可根據指定的標準移除重複元素。

es5和es6怎麼實現陣列去重 es5和es6怎麼實現陣列去重 Jan 16, 2023 pm 05:09 PM

es5中可以利用for語句和indexOf()函數來實現數組去重,語法“for(i=0;i<數組長度;i++){a=newArr.indexOf(arr[i]);if(a== -1){...}}」。在es6中可以利用擴充運算子、Array.from()和Set來去重;需要先將陣列轉為Set物件來去重,然後利用擴充運算子或Array.from()函數來將Set物件轉回數組即可。

PHP 陣列去重後如何保持鍵值對應? PHP 陣列去重後如何保持鍵值對應? Apr 27, 2024 pm 12:33 PM

PHP陣列去重後保持鍵值對應的方法有:使用array_unique()函數去除重複值,再用array_flip()函數交換鍵值對。將原始數組與去重後的數組合並,使用數值組合並的方法來保留鍵值對應。

如何在 PHP 中根據特定鍵值對移除數組中的重複項? 如何在 PHP 中根據特定鍵值對移除數組中的重複項? Apr 28, 2024 pm 06:18 PM

在PHP中,使用array_unique()函數,根據特定鍵值對移除陣列重複項。呼叫函數時傳入數組作為參數,選擇排序方式作為第二個參數。此函數傳回一個新數組,其中重複項已根據指定的鍵值對移除。

PHP 陣列去重時處理空值和 null 值的技巧 PHP 陣列去重時處理空值和 null 值的技巧 Apr 26, 2024 pm 05:03 PM

PHP陣列去重時處理空值和null值的技巧:使用array_unique搭配array_filter過濾空值和null值。使用array_unique並定義自訂比較函數,將空值和null值視為相等。使用array_reduce遍歷數組,並在不包含空值或null值的情況下新增項目。

PHP中如何排除重複數組 PHP中如何排除重複數組 Jun 05, 2023 pm 02:53 PM

PHP中排除重複陣列的方法:1、建立一個PHP範例檔案;2、定義待去重的陣列為“$oldArr”,去重後的新陣列為“$newArr”;3、使用“array_unique()”函數會移除數組中重複元素,並傳回去重後的數組,其程式碼為「$newArr = array_unique($oldArr);」即可排除;4、還可以透過for迴圈的方式進行去重。

php如何去掉陣列內重複元素 php如何去掉陣列內重複元素 May 25, 2023 pm 05:19 PM

php去掉數組內重複元素的方法:1、使用「array_unique()」函數,去除數組中的重複資料;2、透過foreach循環遍歷,透過定義一個新的數組儲存不重複的資料的方法實現去重; 3.使用array_flip()和array_keys()函數,可得到去重後的陣列;4、使用array_filter()函數,透過使用函數結合匿名函數的方式對原始陣列進行去重。

javascript數組去重怎麼做 javascript數組去重怎麼做 Sep 07, 2021 pm 05:59 PM

方法:1、利用「[...new Set(arr)]」語句;2、利用「Array.from(new Set(arr))」語句;3、利用filter和indexOf函數;4、利用雙重for循環,檢查值是否重複,如果有重複就使用push()刪除。

See all articles