JavaScript 中的唯一排序(去除重複項並排序陣列)
如問題所述,建立一個用於在 javascript 中進行唯一排序的程式。基本上,我們必須從陣列中刪除重複元素。
理解問題
在這個問題陳述中,我們需要從陣列中消除相同或重複的項。為了解決這類問題,我們可以使用 javascript 的一些預定義方法。在本文中,您將能夠學習 forEach()、擴充套件運算子、set() 方法、filter() 方法和 indexOf() 方法的用法。
讓我們用一個例子來理解這個問題。
Array before sorting and with duplicates [535, 646, 141, 535, 123, 646, 147, 123] Array after sorting and without duplicates [123, 141, 147, 535, 646]
演算法 - 使用 filter() 函式
下面提到的演算法將提供一個分步過程來解決給定的問題,以解決這個問題。
例如,如果我們給定一個水果陣列,那麼刪除重複項並對其進行排序的精確演算法如下所示
步驟 1:定義一個包含一些重複資料的陣列。
步驟 2:現在邏輯將從這裡開始,如問題所述,我們必須從上面初始化的陣列中消除重複資料。在此步驟中,我們將宣告一個名為 eliminateDuplicates 的函式。
步驟 3:在函式體中,我們將使用 filter 函式,它是 javascript 的預定義函式。此函式將根據此函式內提到的條件過濾資料。
步驟 4:此函式的結果將是排序且唯一的元素陣列。
演算法程式碼 - 使用 filter() 函式
示例
// array with string values const fruits = ["Apple", "Banana", "Pineapple", "Apple", "Strawberry", "Pineapple"]; // function to remove duplicates function eliminateDuplicates() { return fruits.filter((item, index) => fruits.indexOf(item) === index); } console.log("After removing duplicates and sorted array"); console.log(eliminateDuplicates(fruits));
輸出
After removing duplicates and sorted array [ 'Apple', 'Banana', 'Pineapple', 'Strawberry' ]
演算法 - 使用 set() 函式
下面提到的演算法將提供一個分步過程來解決使用 javascript 的 set() 函式給定的問題。
例如,如果我們給定一個顏色的陣列,那麼刪除相同元素並對其進行排序的精確演算法如下所示
步驟 1:定義一個包含一些重複資料的陣列。
步驟 2:現在邏輯將從這裡開始。在此步驟中,我們將宣告一個名為 eliminateDuplicates 的函式,並將 colors 陣列作為引數傳入以進行初始化。
步驟 3:在函式體中,我們將使用 Set() 函式,它是 javascript 的預定義函式。並且在引數中,我們將傳遞一個數組。此函式將以排序形式設定新資料,並刪除重複項。
步驟 4:此函式的結果將是排序且唯一的元素陣列。
演算法程式碼 - 使用 set() 函式
示例
// array with string values const colors = ["Red", "Black", "Pink", "Red", "Silver", "Pink"]; function eliminateDuplicates(colors) { return [...new Set(colors)]; } console.log("After eliminating duplicates") console.log(eliminateDuplicates(colors));
輸出
After eliminating duplicates [ 'Red', 'Black', 'Pink', 'Silver' ]
演算法 - 使用 forEach() 方法
步驟 1:定義一個包含一些重複資料的陣列。在我們的例子中,我們聲明瞭一個包含重複值的整數資料。
步驟 2:現在,在此步驟中,我們將宣告一個名為 eliminateDuplicates 的函式,並將 numbers 陣列作為引數傳入以進行初始化。
步驟 3:在函式體中,我們將使用 forEach() 方法。此方法將檢查陣列的每個元素,並使用回撥函式檢查元素是否相同,然後將該元素推入新陣列。
演算法程式碼 - 使用 forEach() 函式
示例
// array with string values function eliminateDuplicates(numbers) { const sortedArray = []; numbers.forEach(function(element, index) { if (numbers.indexOf(element) === index) { sortedArray.push(element) } }); return sortedArray; } console.log("After eliminating and sorting the array") console.log(eliminateDuplicates([10, 20, 30, 40, 50, 10, 20]));
輸出
After eliminating and sorting the array [ 10, 20, 30, 40, 50 ]
時間複雜度
上述演算法花費的時間為 O(n)。因為所有程式都在陣列的長度上工作,所以完成所有程式的時間複雜度為 O(n)。所有方法都使用 javascript 的函式。這些函式只接收陣列元素進行排序並刪除重複項。
結論
這是解決此類問題的基本思路。在整個過程中,我們使用了 javascript 的一些預定義函式、算術運算子和比較運算子來解決問題。並瞭解如何計算演算法的時間複雜度。