JS陣列去重

2021-10-09 21:06:44 字數 4184 閱讀 5770

const list1 =[1

,2,3

,7,11

,56,3

,2,4

,5];

const list2 =

newset

(list1)

;console.

log(list2)

;//由結果可知,返回了乙個可迭代的set物件,此時還需要把set物件轉為陣列。此時可以用到array.from()。

//**array.from()** 方法從乙個類似陣列或可迭代物件建立乙個新的,淺拷貝的陣列例項.

const list3 = array.

from

(new

set(

[null

,null

, undefined,

12, undefined,7,

2,1,

22,2,

functiona(

),functiona(

),,]

));//這種方式不考慮相容性,且去不掉重複的function和{}

var arr=

;var arr1=array.

from

(new

set(arr));

//簡化

var arr2=

[...

newset

(arr)

];

const list3 =

[null

,null

, undefined, undefined,,,

functionq(

),functionq(

),34,

2,1,

2];for

(let i =

0; i < list3.length; i++)}

}//返回的結果也沒有把function和物件給去掉。

//注:array.indexof(item,statt) 返回陣列中某個指定的元素的位置,沒有則返回-1

var arr =[1

,-5,

-4,0

,-4,

7,7,

3];function

unique

(arr)

}return arr1;

}console.

log(

unique

(arr));

// 1, -5, -4, 0, 7, 3

//注:array.sort( function ) 引數必須是函式,可選,預設公升序

var arr =[5

,7,1

,8,1

,8,3

,4,9

,7];

function

unique

( arr )

}return arr1;

}console.

log(

unique

(arr)

)l;// 1, 1, 3, 4, 5, 7, 7, 8, 8, 9

注:用陣列項作為物件的屬性會自動去除相同的值

var arr =[1

,3,8

,9,3

,5,4

,4,6

,6,2

];function

unique

(arr)

;for

(var i =

0,len=arr.length;i)else

}return arr1;

} console.

log(

unique

(arr));

// 1, 3, 8, 9, 5, 4, 6, 2

//注:arr.includes(指定元素(必填),指定索引值(可選,預設值為0) ),有值返回true,沒有則返回false

var arr =[-

1,0,

8,-3

,-1,

5,5,

7];function

unique

( arr )

}return arr1;

} console.

log(

unique

(arr));

// -1, 0, 8, -3, 5, 7

//注:filter() 方法建立乙個新的陣列,新陣列中的元素是通過檢查指定陣列中符合條件的所有元素

var arr =[1

,2,8

,9,5

,8,4

,0,4

];/* 模擬: 原始陣列:[1,2,8,9,5,8,4,0,4]

索引值:0,1,2,3,4,5,6,7,8

偽新陣列:[1,2,8,9,5,8,4,0,4]

使用indexof方法找到陣列中的元素在元素在中第一次出現的索引值

索引值:0,1,2,3,4,2,6,7,6

返回前後索引值相同的元素:

新陣列:[1,2,8,9,5,4,0]

*/function

unique

( arr ));

} console.

log(

unique

(arr));

// 1, 2, 8, 9, 5, 4, 0

var arr =[1

,1,5

,6,0

,9,3

,0,6

]function

unique

( arr )

)function

loop

(index)

loop

(index -1)

;// 遞迴loop,然後陣列去重}}

loop

(len-1)

;return arr1

}console.

log(

unique

(arr));

// 0, 1, 3, 5, 6, 9

/*

建立乙個空map資料結構,遍歷需要去重的陣列,把陣列的每乙個元素作為key存到map中。由於map中不會出現相同的key值,所以最終得到的就是去重後的結果。

*/let arr =[1

,0,8

,3,-

9,1,

0,-9

,7]function

unique

(arr)

else

}return arr1;

}console.

log(

unique

(arr));

// 1, 0, 8, 3, -9, 7

function

unique

(arr)

function

unique

(arr)

//統計乙個陣列中有多少個不重複的單詞:

// 不用reduce時:

var arr =[,

"orange",,

"orange"

,"pear"

,"orange"];

function

getwordcnt()

;for

(var i=

0, l = arr.length; i< l; i++

)return obj;

} console.

log(

getwordcnt()

);// 用reduce時:

var arr =[,

"orange",,

"orange"

,"pear"

,"orange"];

function

getwordcnt()

,);}

console.

log(

getwordcnt()

);

JS陣列去重,物件去重

例項1根據indexof去重,indexof的好處就是返回的是首次出現的位置,這樣後面即使出現的值一樣,也只能返回第一次出現的索引,當然這個只適用於簡單的陣列 物件陣列去重 const objarr const obj const newobjarr for let i 0 i objarr.len...

js 陣列去重

function unique arr if isrepeated return result 建立乙個新的陣列,迴圈原有的陣列,每取乙個數就迴圈判斷新建的陣列中是否有和這個相等的值,沒有則插入。方法簡單,但是有雙重迴圈,陣列大了之後效率低。所以能一次迴圈解決最好。var str new array...

JS 陣列去重

我總共想出了三種演算法來實現這個目的 array.prototype.unique1 function return n array.prototype.unique2 function r n為hash表,r為臨時陣列 for var i 0 i this.length i 遍歷當前陣列 retu...