JavaScript 删除重复项并对数组排序
正如问题所述,创建一个用于在JavaScript中进行唯一排序的程序。基本上,我们需要从数组中删除重复的元素。
理解问题
在这个问题陈述中,我们需要从数组中消除相同或重复的项目。为了解决这种问题,我们可以使用一些javascript的预定义方法。在本文中,您将学习如何使用forEach()、spread运算符、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的函数,并将颜色数组传递给它以初始化。
步骤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的一些预定义函数、算术运算符和比较运算符来解决问题。同时也了解了算法的时间复杂度如何计算。