JavaScript 中的唯一排序(删除重复项并对数组进行排序)

javascriptweb developmentfront end technologyobject oriented programming更新于 2024/12/20 7:08:17

正如问题所述,在 javascript 中创建一个唯一排序程序。基本上,我们必须从数组中删除重复的元素。

了解问题

在此问题陈述中,我们需要从数组中删除相同或重复的项目。为了解决此类问题,我们可以使用 javascript 的一些预定义方法。在本文中,您将能够学习 forEach()、扩展运算符、set() 方法、filter() 方法和 indexOf() 方法的用法。

让我们通过一个例子来理解这个问题。

排序前有重复项的数组

[535, 646, 141, 535, 123, 646, 147, 123]

排序后无重复项的数组

[123, 141, 147, 535, 646]

算法 - 使用 filter() 函数

下面提到的算法将逐步给出解决给定问题的过程。

例如,如果我们给出了一个水果数组,那么精确的算法可以删除重复项并对其进行排序,如下所示:

步骤 1:定义一个包含一些重复数据的数组。

步骤 2:现在逻辑将从这里开始,正如问题所述我们必须从上面初始化的数组中消除重复数据。在此步骤中,我们将声明一个名为improvementDuplicates的函数。

步骤3:在函数主体中,我们将使用一个过滤函数,它是javascript的预定义函数。此函数将根据此函数中提到的条件过滤数据。

步骤4:此函数的结果将是已排序且唯一元素的数组。

算法代码 - 使用filter()函数

示例

// 具有字符串值的数组
const fruit = ["Apple", "Banana", "Pineapple", "Apple", "Strawberry",
"Pineapple"];

// 删除重复项的函数
function eliminateDuplicates() {
      return fruits.filter((item,
         index) => fruits.indexOf(item) === index);
}
console.log("删除重复项并排序数组后");
console.log(eliminateDuplicates(fruits));

输出

删除重复项并排序数组后
[ 'Apple', 'Banana', 'Pineapple', 'Strawberry' ]

算法 - 使用 set() 函数

下面提到的算法将逐步介绍使用 javascript 的 set() 函数解决给定问题的过程。

例如,如果我们给出了一个颜色数组,那么精确的算法将删除相同的元素并对其进行排序,如下所示:

步骤 1:定义一个包含一些重复数据的数组。

步骤 2:现在逻辑将从这里开始。在此步骤中,我们将声明一个名为消除重复项的函数,并在其中传递颜色数组以进行初始化。

步骤 3:在函数主体中,我们将使用 Set() 函数,它是 javascript 的预定义函数。在参数中,我们将传递一个数组。此函数将以排序形式设置新数据,并删除重复项。

步骤 4:此函数的结果将是排序和唯一元素的数组。

算法代码 - 使用 set() 函数

示例

// 具有字符串值的数组
const colors = ["Red", "Black", "Pink", "Red", "Silver", "Pink"];

function eliminateDuplicates(colors) {
      return [...new Set(colors)];
   }
console.log("消除重复项后")
console.log(eliminateDuplicates(colors));

输出

消除重复项后
[ 'Red', 'Black', 'Pink', 'Silver' ]

算法 - 使用 forEach() 方法

步骤 1:定义一个包含一些重复数据的数组。在我们的例子中,我们声明了一个包含重复值的整数数据。

步骤 2:现在,在此步骤中,我们将声明一个名为消除重复项的函数,并在其中传递数字数组以进行初始化。

步骤 3:在函数主体中,我们将使用 forEach() 方法。此方法将检查数组的每个元素,并使用回调函数检查元素是否相同,以便将该元素推送到新数组中。

算法代码 - 使用 forEach() 函数

示例

// 具有字符串值的数组
function eliminateDuplicates(numbers) {
   const sortedArray = [];

  numbers.forEach(function(element, index) {
     if (numbers.indexOf(element) === index) {
     sortedArray.push(element)
   }
  });

  return sortedArray;
}

console.log("消除并排序数组后")
console.log(eliminateDuplicates([10, 20, 30, 40, 50, 10, 20]));

输出

消除并排序数组后
[ 10, 20, 30, 40, 50 ]

时间复杂度

上述算法所需的时间为 O(n)。由于所有程序都在处理数组的长度,因此完成所有程序的时间复杂度为 O(n)。所有方法都使用 javascript 的函数。这些函数仅使用数组元素来排序和删除重复项。

结论

这是解决此类问题的基本思想。在整个过程中我们使用了一些javascript预定义的函数,算术运算符和比较运算符来解决问题。并且看到了如何计算算法的时间复杂度。


相关文章


有用资源