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 的一些預定義函式、算術運算子和比較運算子來解決問題。並瞭解如何計算演算法的時間複雜度。

更新於: 2023年8月18日

3K+ 瀏覽量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告