1. 程式人生 > >js陣列去重的方法

js陣列去重的方法

1、物件存放,雜湊演算法(對映)判斷

Array.prototype.unique = function() {
    // n為hash表,r為臨時陣列
    var n = {}, r = [];
    for (var i = 0; i < this.length; i++) {
        // 如果hash表中沒有當前項
        if (!n[this[i]]) {
            // 存入hash表
            n[this[i]] = true;
            // 把當前陣列的當前項push到臨時數組裡面
            r.push(this
[i]); } } return r; }

2、先排序,後比較

Array.prototype.unique = function() {
    this.sort();
    var re = [this[0]];
    for (var i = 1; i < this.length; i++) {
        if (this[i] !== re[re.length - 1]) {
            re.push(this[i]);
        }
    }
    return re;
}

3、陣列存放,indexOf()判斷

Array.prototype.unique = function() {
    var n = []; // 存放已遍歷的滿足條件的元素
    for (var i = 0; i < this.length; i++) {
        // indexOf()判斷當前元素是否已存在
        if (n.indexOf(this[i]) == -1) n.push(this[i]);
    }
    return n;
}
// es6簡化版
Array.prototype.unique = function() {
    return Array.from(new
Set(this)); //Set建構函式可以建立一個沒有重複的類陣列集合,用陣列的from方法可以轉換成標準陣列 }

4、陣列filter

var arr = ['apple', 'strawberry', 'banana', 'pear', 'apple', 'orange', 'orange', 'strawberry'];
var r = arr.filter(function (element, index, self) {
    return self.indexOf(element) === index;
});
//去除重複元素依靠的是indexOf總是返回第一個元素的位置,後續的重複元素位置與indexOf返回的位置不相等,因此被filter濾掉了

相關推薦

js 陣列方法總結

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

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.遍歷陣列法 思路:新建一個數組,遍歷原陣列,如果是新數組裡面沒有的元素(indexOf為-1),則插入,最後返回新陣列 var arry = [1,2,3,4,5,5,5,6,67,8,8] var hash = [] for(var i = 0; i<arry.length; i

Js陣列方法

//方法一 var arr = [1,23,1,1,1,3,23,5,6,7,9,9,8,5]; function removeDuplicatedItem(arr) { for(var i = 0; i < arr.length-1; i++){

js陣列方法總結

方法一: 雙層迴圈,外層迴圈元素,內層迴圈時比較值 如果有相同的值則跳過,不相同則push進陣列 function geta(arr) { var arr2 = []; for(var i = 0; i < arr.length; i++) {

js 陣列方法

整理一下陣列去重的常用方法。 //indexof,當前元素並不在其首次出現位置(預設最簡單) let dateArr = [1,2,2,3,1]; let result

幾種常用的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實現陣列方法總結(三種常用方法)

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

JS--陣列的幾種常見方法

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

JS常見的幾種陣列方法

總結一下JS中用到的陣列去重的方法  方法一: 該方法利用物件的屬性值不能相同: function arrDelLikeElement (array) { const result = []; const obj = {}; for(let i in arr

js中最簡單最實用的陣列方法

js陣列去重是比較常見的陣列操作方式之一,網上有很多關於陣列去重的部落格文章,方法各式各樣,但有些方法實用性很差,很容易造成不必要的麻煩,所以我們需要去其糟粕取其精華,下面我們就整理一些比較實用的陣列去重方法。 一、for迴圈巢狀,利用splice去重 此方法是比較常用的

js陣列有哪些方法?

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

js陣列並且升序排序常用方法總結

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

原生JS陣列的幾種方法

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

JS陣列幾種方法

JS陣列去重幾種方法 1. 利用ES6 Set去重(ES6中最常用) ``` function unique(arr){   return Array.from(new Set(arr)); } var arr=[1,1,2,3,3,3,4,4,4,5,5,'1','tr

js陣列常用方法

js陣列去重是面試中經常會碰到的問題,無論是前端還是node。js陣列常見的有兩種形式,一種是陣列各元素均為基本資料型別,常見的為陣列字串格式,形如['a','b','c'];一種是陣列各元素不定,元素中既有基本資料型別,也有引用資料型別,形式如[{name:1,age:2}];這裡介紹兩種常見的js去重方式

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]陣列的幾種方法

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

js陣列方法

1、物件存放,雜湊演算法(對映)判斷 Array.prototype.unique = function() { // n為hash表,r為臨時陣列 var n = {}, r = []; for (var i = 0; i <

js陣列方法!!!

第一種是比較常規的方法 思路: 1.構建一個新的陣列存放結果 2.for迴圈中每次從原陣列中取出一個元素,用這個元素迴圈與結果陣列對比 3.若結果陣列中沒有該元素,則存到結果陣列中 複製程式碼程式碼如下: Array.prototype.unique1 =