1. 程式人生 > >js陣列去重的5種演算法實現

js陣列去重的5種演算法實現

1.遍歷陣列法
最簡單的去重方法,實現思路:新建一新陣列,遍歷傳入陣列,值不在新陣列就加入該新陣列中;注意點:判斷值是否在陣列的方法“indexOf”是ECMAScript5 方法,IE8以下不支援,需多寫一些相容低版本瀏覽器程式碼,原始碼如下:

?
1 2 3 4 5 6 7 8 9 10 11 // 最簡單陣列去重法 function unique1(array){ var n = []; //一個新的臨時陣列 //遍歷當前陣列 for
(var i = 0; i < array.length; i++){ //如果當前陣列的第i已經儲存進了臨時陣列,那麼跳過, //否則把當前項push到臨時數組裡面 if (n.indexOf(array[i]) == -1) n.push(array[i]); } return n; }

2.物件鍵值對法
該方法執行的速度比其他任何方法都快, 就是佔用的記憶體大一些,實現思路:新建一js物件以及新陣列,遍歷傳入陣列時,判斷值是否為js物件的鍵,不是的話給物件新增該鍵並放入新陣列。注意 點: 判斷是否為js物件鍵時,會自動對傳入的鍵執行“toString()”,不同的鍵可能會被誤認為一樣;例如: a[1]、a["1"] 。解決上述問題還是得呼叫“indexOf”。

?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 // 速度最快, 佔空間最多(空間換時間) function unique2(array){ var n = {}, r = [], len = array.length, val, type; for (var i = 0; i < array.length; i++) { val = array[i];
type = typeof val;
js陣列5演算法實現

1.遍歷陣列法 最簡單的去重方法,實現思路:新建一新陣列,遍歷傳入陣列,值不在新陣列就加入該新陣列中;注意點:判斷值是否在陣列的方法“indexOf”是ECMAScript5 方法,IE8以下不支援,需多寫一些相容低版本瀏覽器程式碼,原始碼如下:

JS陣列的幾實現方法

//使用indexOf function unique1(arr) { var result=[]; for(var i=0;i<arr.length;i++){ if(result.indexOf(arr[i])==-1){ result.push(ar

JS--陣列的幾常見方法

一、簡單的去重方法 // 最簡單陣列去重法 /* * 新建一新陣列,遍歷傳入陣列,值不在新陣列就push進該新陣列中 * IE8以下不支援陣列的indexOf方法 * */ function uniq(array){ var temp = []; //一個新的臨時陣列 for(v

原生JS陣列的幾方法

有時候我們做專案的時候往往會需要把數組裡面一些重複的項去掉,但是原生JS有排序,有篩選等等,但是就是沒有陣列去重怎麼辦呢? 這能怎麼辦,自己手動實現嘛。(以下程式碼直接在原型上新增的的方法,為的就是和原生JS方法類似)可以達到Array.xxx()這樣的效果 第一種方法:建

[js]陣列的幾方法

問題:隨機10個不相同的數(數值範圍11~25之間的)並且存放到陣列中 程式碼: // 函式:隨機生成一個從min到max的數 function randFn(min, max){

常用的js陣列方法

Array.prototype.distinct = function(){ var arr = this, result = [], i, j, len = arr.length; for(i = 0; i < len; i++){ for(j = i + 1; j <

Js陣列的幾方法 ES6

總結兩種方法: 1. 最簡單陣列去重法,新建一新陣列,遍歷傳入陣列,值不在新陣列就push進該新陣列中,IE8以下不支援陣列的indexOf方法 function uniq(arr){ var tem=[]; for(var i=0;i&

JS陣列實現

其實陣列去重的實現就分為兩大類 利用語法自身鍵不可重複性 利用迴圈(遞迴)和陣列方法使用不同的api來處理。 注意⚠️:下列封裝成方法的要在函式開始增加型別檢測,為了讓去重的實現程式碼更加簡單易懂,封裝時我會省略型別檢測 function noRepeat(){ if (!Array.

js陣列扁平化

陣列去重 var arr = [1, 43, 4, 3, 2, 4, 3]; // 去重後 arr = [1, 43, 4, 3, 2] 傳統方法,for迴圈實現 function dedupe(arr) { var rets = []; f

js陣列六法

方法一: 雙層迴圈,外層迴圈元素,內層迴圈時比較值,如果有相同的值則跳過,不相同則push進陣列 Array.prototype.distinct = function(){  var arr = this,   result = [],   

js 陣列小技巧

js 陣列去重小技巧 Intro 今天遇到一個問題,需要對資料進行去重,想看一下有沒有什麼比較方便的方法,果然有些收穫。 Question 問題描述: 我有一個這樣的資料: [ { "ProjectId": "94147992363ef910", "Proj

js 陣列方法總結

js 陣列去重方法應該是面試中比較常問到的一個問題,今天在網上找了一些相關資料,在這裡做下總結!廢話不多說直接上程式碼! 方法一: var arr = [0,2,3,4,4,0,2]; var obj = {}; var tmp = []; for(var i = 0 ;i<

JS陣列

1.遍歷陣列法 它是最簡單的陣列去重方法(indexOf方法) 實現思路:新建一個數組,遍歷去要重的陣列,當值不在新陣列的時候(indexOf為-1)就加入該新陣列中; var arr=[2,8,5,0,5,2,6,7,2]; function unique1(arr)

js陣列排序

<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>www.jb51.net 陣列去重</title> </head>

js 陣列

有時候我們做專案的時候往往會需要把數組裡面一些重複的項去掉,但是原生JS有排序,有篩選等等,但是就是沒有陣列去重怎麼辦呢? 這能怎麼辦,自己手動實現嘛。(以下程式碼直接在原型上新增的的方法,為的就是和原生JS方法類似)可以達到Array.xxx()這樣的效果 第一種方法:建立空陣列利用indexOf方法檢測

js陣列方法整理

一、利用ES6 Set去重(ES6中最常用) function removeDup(){ return Array.from(new Set(arr)); } var arr = [1,1,'true','true',true,true,15,15,fal

js--陣列

一、普通的方法去重 1、簡單的去重方法 // 最簡單陣列去重法 /* * 新建一新陣列,遍歷傳入陣列,值不在新陣列就push進該新陣列中 * IE8以下不支援陣列的indexOf方法 * *

js陣列有哪些方法?

原生js去重方法 1. 冒泡去重 function unique(arr){ var res=[]; for(var i=0,len=arr.length;i<len;i++){ var obj = arr[i];

js 陣列 + 是否包含指定字串 + 深淺拷貝+數組合並

window.uniq=function (array){ array.sort(); var temp=[array[0]]; for(var i = 1; i < array.length; i++){