ES6引入了許多新的特性,使得數組排序變得更加方便快捷。本文將從多個方面詳細闡述ES6數組排序,讓讀者能夠對此方面有更深刻的認識。
一、ES6數組排序sort
ES6數組中提供了sort方法用於排序,該方法會改變原數組。
let arr = [3, 2, 1, 4];
arr.sort();
console.log(arr); // [1, 2, 3, 4]
sort方法默認會按照字元串的Unicode值進行排序。如果要按照數字大小進行排序,則需要傳入比較函數。
let arr = [3, 2, 1, 4];
arr.sort(function(a, b) {
return a - b;
});
console.log(arr); // [1, 2, 3, 4]
這裡傳入的比較函數會返回一個小於0的值、等於0的值或大於0的值。當返回小於0的值時,表示a應該排在b的前面;當返回等於0的值時,表示a和b相等;當返回大於0的值時,表示a應該排在b的後面。
二、數組排序方法
除了sort方法外,數組還提供了許多其他排序方法。
1. reverse
reverse方法用於反轉數組,它會改變原數組。
let arr = [1, 2, 3, 4];
arr.reverse();
console.log(arr); // [4, 3, 2, 1]
2. join
join方法用於將數組轉換為字元串,它不會改變原數組。
let arr = [1, 2, 3, 4];
let str = arr.join('-');
console.log(str); // "1-2-3-4"
console.log(arr); // [1, 2, 3, 4]
3. slice
slice方法用於返回原數組的一個子數組,它不會改變原數組。
let arr = [1, 2, 3, 4];
let newArr = arr.slice(1, 3);
console.log(newArr); // [2, 3]
console.log(arr); // [1, 2, 3, 4]
三、ES6數組排序的方法
除了sort方法外,ES6還提供了其他排序方法。
1. entries、keys、values
entries、keys、values方法返回一個迭代器對象,可以用於遍曆數組的鍵值對、鍵、值。
let arr = [1, 2, 3, 4];
for(let [index, value] of arr.entries()) {
console.log(index, value);
}
// 輸出:
// 0 1
// 1 2
// 2 3
// 3 4
2. copyWithin
copyWithin方法用於將數組中的一部分複製到另一部分,它會改變原數組。
let arr = [1, 2, 3, 4];
arr.copyWithin(2, 0, 2);
console.log(arr); // [1, 2, 1, 2]
這裡將數組中的前兩個元素複製到了數組中的第二個位置和第三個位置。
四、ES6數組排序
在ES6中,我們還可以使用箭頭函數和展開運算符進行數組排序。
1. ES6數組排序從小到大
let arr = [3, 2, 1, 4];
arr.sort((a, b) => a - b);
console.log(arr); // [1, 2, 3, 4]
2. ES6數組排序sort從大到小
let arr = [3, 2, 1, 4];
arr.sort((a, b) => b - a);
console.log(arr); // [4, 3, 2, 1]
五、其他語言數組排序
除了ES6外,其他語言也提供了很多數組排序的方法。
1. C++數組排序
#include <algorithm>
#include <iostream>
using namespace std;
int main() {
int arr[] = {3, 2, 1, 4};
sort(arr, arr + 4);
for(int i = 0; i < 4; i++) {
cout << arr[i] << " ";
}
return 0;
}
// 輸出:1 2 3 4
2. 數組排序C語言函數
#include <stdio.h>
#include <stdlib.h>
int cmp(const void* a, const void* b) {
return (*(int*)a - *(int*)b);
}
int main() {
int arr[] = {3, 2, 1, 4};
qsort(arr, 4, sizeof(int), cmp);
for(int i = 0; i < 4; i++) {
printf("%d ", arr[i]);
}
return 0;
}
// 輸出:1 2 3 4
3. C語言數組排序
#include <stdio.h>
void bubbleSort(int arr[], int n) {
int i, j, temp;
for (i = 0; i < n - 1; i++) {
for (j = 0; j < n - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
temp = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = temp;
}
}
}
}
int main() {
int arr[] = {3, 2, 1, 4};
bubbleSort(arr, 4);
for(int i = 0; i < 4; i++) {
printf("%d ", arr[i]);
}
return 0;
}
// 輸出:1 2 3 4
六、ES6數組對象按欄位排序
在ES6中,我們可以按照對象中的某個欄位進行排序。
let arr = [
{name: 'Tom', age: 18},
{name: 'Bob', age: 20},
{name: 'Jim', age: 19}
];
arr.sort((a, b) => a.age - b.age);
console.log(arr);
// 輸出:
// [
// {name: "Tom", age: 18},
// {name: "Jim", age: 19},
// {name: "Bob", age: 20}
// ]
在sort方法中,我們傳入的比較函數將數組中的每個對象作為參數,然後按照對象的age欄位進行排序。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/183709.html