📜  排序数组 javascript (1)

📅  最后修改于: 2023-12-03 15:10:10.298000             🧑  作者: Mango

排序数组 JavaScript

在JavaScript中,排序数组是非常常见的操作。它可以用于将数组中的元素按特定的顺序排列,并且可以帮助我们更快地查找和获取数组中的元素。

如何将数组排序?

在JavaScript中,我们可以使用sort()函数来对数组进行排序。sort()函数可以接受一个可选的参数排序函数,来根据特定规则进行排序。如果没有提供排序函数,则sort()默认按照字符的Unicode码点进行排序。

下面是一个使用sort()函数按照数字大小对数组进行排序的示例:

let arr = [3, 1, 6, 2, 8, 4];
arr.sort((a, b) => a - b);
console.log(arr); // 输出 [1, 2, 3, 4, 6, 8]

在这个示例中,我们定义了一个数组arr,并使用sort()函数对其进行排序。在sort()函数中,我们传入了一个排序函数(a, b) => a - b。这个函数接受两个参数ab,并返回它们的差值。因为sort()函数根据返回值的正负来判断元素的大小关系,所以这个排序函数可以将数组按照数字大小进行排序。

如何对对象数组进行排序?

如果我们想要对一个包含对象的数组进行排序,我们需要定义一个排序函数,并在其中指定按照哪个属性进行排序。下面是一个例子:

let arr = [
  { name: 'John', age: 20 },
  { name: 'Jane', age: 25 },
  { name: 'Bob', age: 18 }
];

arr.sort((a, b) => a.age - b.age);
console.log(arr); // 输出 [{ name: 'Bob', age: 18 }, { name: 'John', age: 20 }, { name: 'Jane', age: 25 }]

在这个示例中,我们定义了一个包含三个对象的数组arr,每个对象都有一个name属性和一个age属性。我们使用sort()函数对数组进行排序,并传入一个排序函数(a, b) => a.age - b.age。这个函数比较两个对象的age属性,并按照升序排序。

如何对数组进行倒序排序?

如果我们想要对数组进行倒序排序,我们可以使用reverse()函数。reverse()函数会反转数组中元素的顺序。下面是一个例子:

let arr = [1, 2, 3, 4, 5];
arr.reverse();
console.log(arr); // 输出 [5, 4, 3, 2, 1]

在这个示例中,我们定义了一个数组arr,包含了数字1到5。我们使用reverse()函数对数组进行倒序排序,将数组中的元素从前往后依次反转。

如何去重一个排序数组?

如果我们想要去重一个排序数组,我们可以使用双指针法。这个方法比较简单,我们只需要使用两个指针,一个指向当前不重复的元素,另一个用于遍历数组。下面是一个例子:

let arr = [1, 1, 2, 2, 3, 4, 5, 5, 7, 8, 8];
let i = 0;
for (let j = 1; j < arr.length; j++) {
  if (arr[i] !== arr[j]) {
    i++;
    arr[i] = arr[j];
  }
}
arr.length = i + 1;
console.log(arr); // 输出 [1, 2, 3, 4, 5, 7, 8]

在这个示例中,我们定义了一个数组arr,包含了重复的数字。我们使用双指针法对数组进行去重,定义指针i指向当前不重复的元素,定义指针j用于遍历数组。当arr[i]arr[j]不相等时,意味着找到了一个新的不重复元素,将其赋值给arr[i+1],并将指针i向前移。

总结

对于排序数组而言,JavaScript提供了非常便捷的排序函数sort(),可以根据传入的排序函数自定义排序方式。对于对象数组,我们可以自定义排序函数按照对象属性进行排序。在去重排序数组时,双指针法可以非常高效地完成。