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 的一些预定义函数、算术运算符和比较运算符来解决问题。并了解如何计算算法的时间复杂度。