前端必備的幾種陣列排序和去重的方法

2021-09-28 14:31:31 字數 2529 閱讀 3434

前端開發避免不了對各種資料型別的處理,其中陣列的排序和去重是必備的技能,往往面試時也也會經常遇到。

1.簡單的sort排序:

var arr=[1

,5,3

,87,23

];arr.

sort

(function

(a,b)

)console.

log(arr)

//輸出:[1,23,3,5,87]

注:若返回b-a可獲得從大到小的排序;

陣列的sort方法只能實現簡單的按位排序,並不精確。如下:

var arr=[1,2,4,5,11,22];

arr.sort(function(a,b))

console.log(arr)//輸出:[1,11,2,22,4,5]

2.氣泡排序
var arr=[1

,5,2

,6,3

,3,4

,56,7

,5,5

,5,6

,7,8

];function fn

(arr)}}

return arr;

}

3.選擇排序
function fn

(arr)

}var temp=arr[i]

;//每輪比較結束,將最初假定的最小值和實際最小值交換

arr[i]

=arr[minindex]

; arr[minindex]

=temp;

}return arr;

//將排序後的陣列返回

}

1.陣列sort加splice擷取去重(推薦)

原理:使用sort進行簡單排序,將相同項放一起,然後迴圈比較擷取

var arr1=[1

,3,6

,6,6

,4];

function norepeat

(arr)

}return arr;

}console.

log(

norepeat

(arr1)

);

2.陣列splice擷取方法去重
var arr1=[1

,3,6

,6,6

,4];

function norepeat

(arr)}}

return arr;

}console.

log(

norepeat

(arr1)

);

3.陣列indexof方法去重(推薦)

原理:若陣列中不包含某一元素則它的indexof值為-1,若為-1則將該元素放入新陣列中,最終返回新陣列即為去重後的陣列

function norepeat

(arr)

}return newarr;

}

4.借助物件的特性去重(推薦)

原理:若object裡不存在某一屬性,其值為undefined;把陣列中的元素當物件的屬性來判斷

先宣告乙個空陣列和乙個空物件,然後遍歷陣列,判斷物件中是否含有該屬性,若為undefined則將該元素放入新陣列中,並給與該屬性乙個屬性值1,最終返回新陣列即為去重後的陣列

var arr1=[1

,3,6

,6,6

,4];

function norepeat

(arr)

;for

(var i=

0;ireturn newarr;

}console.

log(

norepeat

(arr1)

);

es6新增方法

5.set與解構賦值去重

function unique

(arr)

return

[...

newset

(arr)

]}

6.array.from與set去重
function unique

(arr)

return array.

from

(new

set(arr)

)}

7.利用filter的陣列去重
var r;

var arr =[,

'strawberry'

,'banana'

,'pear',,

'orange'

,'orange'

,'strawberry'];

r = arr.

filter

(function (element, index, self));

alert

(r);

以上提供了多種陣列去重方法,可自行選擇使用,也可自行測試這幾種方法的耗時效能。

幾種陣列去重方法

使用es6中的set是最簡單的去重方法。var arr 1 1,true true true true,15 15,false false undefined,undefined,null null nan nan nan 0 0,a a function arr unique1 arr arr u...

JS常見的幾種陣列去重方法

總結一下js中用到的陣列去重的方法 方法一 該方法利用物件的屬性值不能相同 function arrdellikeelement array for let i in array return result arr arrdellikeelement arr 方法二 該方法使用es6中的對映方法 f...

多種陣列去重的方法

陣列內都是數字方法 1.建立乙個空陣列,用於存放不重複的值 2.給陣列排序 3.用遞迴相鄰逐個對比,如果不相同,則push到建立的空陣列裡面去 var a 1,2,5,6,2,1,0,2,8,4,56,4,65,4 var n var s a.sort function a,b function c...