JavaScript 中有多種方法可以實現數組去重,下麵是幾種常用的方法: 1、使用 Set 去重:Set 數據結構中不能有重覆元素,可以將數組轉成 Set 類型,再轉回數組。 let arr = [1,2,3,4,5,6,2,3,4]; let uniqueArr = [...new Set(ar ...
JavaScript 中有多種方法可以實現數組去重,下麵是幾種常用的方法:
1、使用 Set 去重:Set 數據結構中不能有重覆元素,可以將數組轉成 Set 類型,再轉回數組。
let arr = [1,2,3,4,5,6,2,3,4];
let uniqueArr = [...new Set(arr)];
console.log(uniqueArr); // [1, 2, 3, 4, 5, 6]
2、使用 Array.prototype.filter() 去重: filter() 函數可以過濾數組中不符合條件的元素,可以用來去重。
let arr = [1,2,3,4,5,6,2,3,4];
let uniqueArr = arr.filter((item, index, array) => array.indexOf(item) === index);
console.log(uniqueArr); // [1, 2, 3, 4, 5, 6]
3、使用 for 迴圈和 indexOf() 去重: 遍曆數組,判斷當前遍歷到的元素在數組中第一次出現的位置是否和當前遍歷到的位置相同,如果不同說明該元素之前出現過,則捨去。
let arr = [1,2,3,4,5,6,2,3,4];
let uniqueArr = [];
for(let i = 0; i < arr.length; i++) {
if(uniqueArr.indexOf(arr[i]) === -1) {
uniqueArr.push(arr[i]);
}
}
console.log(uniqueArr); // [1, 2, 3, 4, 5, 6]
4、使用 Object 鍵值對去重:遍曆數組,將數組元素當作對象的鍵,如果該鍵不存在,則將其添加到新數組中。
let arr = [1,2,3,4,5,6,2,3,4];
let uniqueArr = [], obj = {};
for(let i = 0; i < arr.length; i++) {
if(!obj[arr[i]]) {
uniqueArr.push(arr[i]);
obj[arr[i]] = true;
}
}
console.log(uniqueArr); // [1, 2, 3, 4, 5, 6]
5、使用 Array.prototype.reduce() 去重: reduce() 函數可以用來構建新數組,只添加沒有出現過的元素。
let arr = [1,2,3,4,5,6,2,3,4];
let uniqueArr = arr.reduce((acc, cur) => acc.includes(cur) ? acc : [...acc, cur], []);
console.log(uniqueArr); // [1, 2, 3, 4, 5, 6]
6、使用 Map 去重: Map 數據結構中不能有重覆元素,可以將數組轉成 Map類型,再轉回數組。
let arr = [1,2,3,4,5,6,2,3,4];
let uniqueArr = Array.from(new Map(arr.map(item => [item, item])).values());
console.log(uniqueArr); // [1, 2, 3, 4, 5, 6]
7、使用 Array.prototype.includes() 去重: 遍曆數組,判斷當前遍歷到的元素是否存在於新數組中,如果不存在則將其添加到新數組中。
let arr = [1,2,3,4,5,6,2,3,4];
let uniqueArr = [];
for(let i = 0; i < arr.length; i++) {
if(!uniqueArr.includes(arr[i])) {
uniqueArr.push(arr[i]);
}
}
console.log(uniqueArr); // [1, 2, 3, 4, 5, 6]
8、使用 Array.prototype.sort() 去重: sort 方法可以將數組元素排序,可以將相鄰的重覆元素放在一起,然後遍曆數組將不同的元素放入新數組中。
let arr = [1,2,3,4,5,6,2,3,4];
let uniqueArr = arr.sort().filter(function (item, index, array) {
return !index || item !== array[index - 1];
});
console.log(uniqueArr); // [1, 2, 3, 4, 5, 6]
9、使用第三方庫 lodash 的 uniq() 去重。
10、使用第三方庫 Ramda 的 uniq() 去重。
-
前言 對於一個懶懶的,不想寫高精的人(就是我),每次都會遭遇到答案爆$long$ $long$的危險 比如說這道題: 題目傳送門 最後的$23-25$的兩個點,$long$ $long$甚至$unsigned$ $long$ $long$都無法滿足,難道真的要手打高精度了嗎? 不,我們有$\_$$\ ...
-
2023-01-24 一、CentOS中的時間日期類命令 1、date顯示當前時間 (1)date (功能描述:顯示當前時間) (2)date + %Y (功能描述:顯示當前年份) (3)date + %m (功能描述:顯示當前月份) (4)date + %d (功能描述:顯示當前是哪一天) (5) ...
-
2023-01-24 一、幫助命令 1、基本語法 man[命令或配置文件] 功能描述:獲得幫助信息 2、顯示說明 (1)NAME:命令的名稱和單行描述 (2)SYNOPSIS:怎樣使用命令 (3)DESCRIPTION:命令功能的深入討論 (4)EXAMPLES:怎樣使用命令的例子 (5)SEE A ...
-
這篇文章主要關註服務發現,會討論基於DNS、VIP、ZooKeeper以及消息匯流排的服務發現機制,研究出在服務發現需要AP還是CP。 ...
-
測試網站是本人學校,費話不多說下麵開始 首先直接導庫,過程中需要時間戳,rsa加密 import requests import re import time from Crypto.PublicKey import RSA from Crypto.Cipher import PKCS1_v1_5 ...
-
2023-01-24 一、NoSQL資料庫 1、NoSQL資料庫的簡介 NoSQL(NoSQL=Not Only SQL),即“不僅僅是SQL”,泛指非關係型的資料庫。NosQL不依賴業務邏輯方式存儲,而以簡單的key-value模式存儲。因此大大的增加了資料庫的擴展能力。 (1)不遵循SQL標準 ...
-
1、首先是adb版本需要新的,老的adb不支持無線連接,如:“adb pair 192.168.3.x:xxxxx”不支持pair這個參數,這個參數表示驗證配對碼!!!新的adb才支持。 無法識別pair參數 2、支持無線調試的手機需要和用於調試的電腦在同一個區域網下。 3、通過adb連接: 【1】 ...
-
JavaScript 中有兩種類型轉換:隱式類型轉換和顯式類型轉換。 隱式類型轉換指 JavaScript 在運行時自動將一種類型轉換為另一種類型。例如,在數學運算中,JavaScript 會將字元串轉換為數字。 顯式類型轉換指在代碼中使用內置函數或全局對象將一種類型顯式地轉換為另一種類型。例如,使 ...