Hướng dẫn sort array by subarray value javascript - sắp xếp mảng theo giá trị subarray javascript

Hàm so sánh được truyền đến hàm

[ 0, 1, 10, 2, 20, 3, 30 ]

Code language: JSON / JSON with Comments (json)
4 lấy các giá trị từ mảng.

Vì vậy, như bạn đã đề cập rằng bạn có một mảng mảng, các đối số của hàm so sánh sẽ là mảng.

Do đó, bạn có thể sử dụng

[ 0, 1, 10, 2, 20, 3, 30 ]

Code language: JSON / JSON with Comments (json)
5 và

[ 0, 1, 10, 2, 20, 3, 30 ]

Code language: JSON / JSON with Comments (json)
6 để truy cập các đối tượng.

Đây là mã:

nodes = [[{ distance: 15 }], [{ distance: 123 }], [{ distance: 2 }]];

function sortNodes(a, b) {
    if (a[0].distance < b[0].distance) return -1;
    if (a[0].distance > b[0].distance) return 1;
    return 0;
}
console.log(nodes.slice(0).sort(sortNodes));

Đây là ví dụ về cấu trúc tốt đẹp:

nodes = [[{ distance: 15 }], [{ distance: 123 }], [{ distance: 2 }]];

function sortNodes([a], [b]) {
    return a.distance - b.distance
}
console.log(nodes.slice(0).sort(sortNodes));

Xem ví dụ sau:: in this tutorial, you will learn how to use the JavaScript Array

[ 0, 1, 10, 2, 20, 3, 30 ]

Code language: JSON / JSON with Comments (json)
4 method to sort arrays of numbers, string, and objects.

Làm thế nào nó hoạt động:

Đầu tiên, tuyên bố & nbsp; một mảng

let numbers = [0, 1, 2, 3, 10, 20, 30]; numbers.sort((a, b) => a - b); console.log(numbers);

Code language: JavaScript (javascript)
4 bao gồm các tên sông nổi tiếng.

Thứ hai, sắp xếp & nbsp; mảng

let numbers = [0, 1, 2, 3, 10, 20, 30]; numbers.sort((a, b) => a - b); console.log(numbers);

Code language: JavaScript (javascript)
4 theo độ dài của phần tử & nbsp; sử dụng phương thức

[ 0, 1, 10, 2, 20, 3, 30 ]

Code language: JSON / JSON with Comments (json)
4. Chúng tôi & nbsp; xuất các phần tử của mảng

let numbers = [0, 1, 2, 3, 10, 20, 30]; numbers.sort((a, b) => a - b); console.log(numbers);

Code language: JavaScript (javascript)
4 vào bảng điều khiển web bất cứ khi nào phương thức

[ 0, 1, 10, 2, 20, 3, 30 ]

Code language: JSON / JSON with Comments (json)
4 gọi hàm so sánh.

Như thể hiện trong đầu ra ở trên, mỗi phần tử đã được đánh giá nhiều lần, ví dụ, Amazon 4 lần, Congo 2 lần, v.v.

Nếu số lượng các phần tử mảng đang tăng lên, nó sẽ có khả năng làm giảm hiệu suất.

let numbers = [0, 1 , 2, 3, 10, 20, 30 ]; numbers.sort(); console.log(numbers);

Code language: JavaScript (javascript)

Bạn không thể giảm số lần chức năng so sánh được thực thi. Tuy nhiên, bạn có thể giảm công việc mà so sánh phải làm. Kỹ thuật này được gọi là biến đổi Schwartzian.

[ 0, 1, 10, 2, 20, 3, 30 ]

Code language: JSON / JSON with Comments (json)

Để thực hiện & nbsp; điều này, bạn làm theo các bước sau:

Đầu tiên, trích xuất các giá trị thực tế vào một mảng tạm thời & nbsp; bằng phương thức map ().

Thứ hai, sắp xếp mảng tạm thời với & nbsp; các yếu tố đã được đánh giá (hoặc biến đổi).

array.sort(comparefunction)

Code language: CSS (css)

Thứ ba, đi bộ mảng tạm thời để có được một mảng với & nbsp; đúng thứ tự.

Trong hướng dẫn này, bạn đã học được cách sử dụng phương thức mảng JavaScript

[ 0, 1, 10, 2, 20, 3, 30 ]

Code language: JSON / JSON with Comments (json)
4 để sắp xếp các mảng, số, ngày và đối tượng.

Hàm & nbsp; so sánh chức năng của phương thức

[ 0, 1, 10, 2, 20, 3, 30 ]

Code language: JSON / JSON with Comments (json)
4 chấp nhận hai đối số và trả về một giá trị xác định thứ tự sắp xếp. Sau đây minh họa cú pháp của hàm so sánh:

function compare(a,b) { // ... }

Code language: JavaScript (javascript)

Hàm

function compare(a,b) { // ... }

Code language: JavaScript (javascript)
0 chấp nhận hai đối số

function compare(a,b) { // ... }

Code language: JavaScript (javascript)
1 và ________ 52. & NBSP; Phương thức

[ 0, 1, 10, 2, 20, 3, 30 ]

Code language: JSON / JSON with Comments (json)
4 sẽ sắp xếp các phần tử dựa trên giá trị trả về của hàm

function compare(a,b) { // ... }

Code language: JavaScript (javascript)
0 với các quy tắc sau:

  1. Nếu

    function compare(a,b) { // ... }

    Code language: JavaScript (javascript)
    5 nhỏ hơn 0, phương thức

    [ 0, 1, 10, 2, 20, 3, 30 ]

    Code language: JSON / JSON with Comments (json)
    4 sẽ sắp xếp

    function compare(a,b) { // ... }

    Code language: JavaScript (javascript)
    1 đến chỉ số thấp hơn

    function compare(a,b) { // ... }

    Code language: JavaScript (javascript)
    2. Nói cách khác,

    function compare(a,b) { // ... }

    Code language: JavaScript (javascript)
    1 sẽ đến trước.
  2. Nếu

    function compare(a,b) { // ... }

    Code language: JavaScript (javascript)
    5 lớn hơn 0, phương thức

    [ 0, 1, 10, 2, 20, 3, 30 ]

    Code language: JSON / JSON with Comments (json)
    4 sắp xếp

    function compare(a,b) { // ... }

    Code language: JavaScript (javascript)
    2 đến chỉ số thấp hơn

    function compare(a,b) { // ... }

    Code language: JavaScript (javascript)
    1, tức là, B sẽ đến trước.
  3. Nếu

    function compare(a,b) { // ... }

    Code language: JavaScript (javascript)
    5 trả về 0, phương thức

    [ 0, 1, 10, 2, 20, 3, 30 ]

    Code language: JSON / JSON with Comments (json)
    4 xem xét A bằng B và để lại các vị trí của họ & NBSP;

Để khắc phục sự cố sắp xếp số, bạn có thể sử dụng cú pháp sau:

let numbers = [0, 1 , 2, 3, 10, 20, 30 ]; numbers.sort( function( a , b){ if(a > b) return 1; if(a < b) return -1; return 0; }); console.log(numbers);

Code language: JavaScript (javascript)

Output:

[ 0, 1, 2, 3, 10, 20, 30 ]

Code language: JSON / JSON with Comments (json)

Hoặc bạn có thể xác định chức năng so sánh bằng cách sử dụng cú pháp hàm mũi tên:

let numbers = [0, 1 , 2, 3, 10, 20, 30 ]; numbers.sort((a,b) => { if(a > b) return 1; if(a < b) return -1; return 0; }); console.log(numbers);

Code language: JavaScript (javascript)

Và sau đây là đơn giản nhất vì các phần tử của mảng là số:

let numbers = [0, 1, 2, 3, 10, 20, 30]; numbers.sort((a, b) => a - b); console.log(numbers);

Code language: JavaScript (javascript)

Sắp xếp một mảng chuỗi

Giả sử bạn & nbsp; có một mảng chuỗi có tên

let numbers = [0, 1 , 2, 3, 10, 20, 30 ]; numbers.sort( function( a , b){ if(a > b) return 1; if(a < b) return -1; return 0; }); console.log(numbers);

Code language: JavaScript (javascript)
6 như sau:

nodes = [[{ distance: 15 }], [{ distance: 123 }], [{ distance: 2 }]];

function sortNodes([a], [b]) {
    return a.distance - b.distance
}
console.log(nodes.slice(0).sort(sortNodes));
0

Để sắp xếp các phần tử của mảng

let numbers = [0, 1 , 2, 3, 10, 20, 30 ]; numbers.sort( function( a , b){ if(a > b) return 1; if(a < b) return -1; return 0; }); console.log(numbers);

Code language: JavaScript (javascript)
6 & nbsp; theo thứ tự tăng dần theo thứ tự bảng chữ cái, bạn sử dụng phương thức

[ 0, 1, 10, 2, 20, 3, 30 ]

Code language: JSON / JSON with Comments (json)
4 mà không chuyển hàm so sánh như trong ví dụ sau:

nodes = [[{ distance: 15 }], [{ distance: 123 }], [{ distance: 2 }]];

function sortNodes([a], [b]) {
    return a.distance - b.distance
}
console.log(nodes.slice(0).sort(sortNodes));
1

Output:

nodes = [[{ distance: 15 }], [{ distance: 123 }], [{ distance: 2 }]];

function sortNodes([a], [b]) {
    return a.distance - b.distance
}
console.log(nodes.slice(0).sort(sortNodes));
2

Để sắp xếp mảng

let numbers = [0, 1 , 2, 3, 10, 20, 30 ]; numbers.sort( function( a , b){ if(a > b) return 1; if(a < b) return -1; return 0; }); console.log(numbers);

Code language: JavaScript (javascript)
6 theo thứ tự giảm dần, bạn cần thay đổi logic của hàm so sánh và chuyển nó & nbsp; sang phương thức

[ 0, 1, 10, 2, 20, 3, 30 ]

Code language: JSON / JSON with Comments (json)
4 như & nbsp; ví dụ sau.

nodes = [[{ distance: 15 }], [{ distance: 123 }], [{ distance: 2 }]];

function sortNodes([a], [b]) {
    return a.distance - b.distance
}
console.log(nodes.slice(0).sort(sortNodes));
3

Output:

nodes = [[{ distance: 15 }], [{ distance: 123 }], [{ distance: 2 }]];

function sortNodes([a], [b]) {
    return a.distance - b.distance
}
console.log(nodes.slice(0).sort(sortNodes));
4

Giả sử bạn có một mảng chứa các phần tử ở cả chữ hoa và chữ thường như sau:

nodes = [[{ distance: 15 }], [{ distance: 123 }], [{ distance: 2 }]];

function sortNodes([a], [b]) {
    return a.distance - b.distance
}
console.log(nodes.slice(0).sort(sortNodes));
5

Để sắp xếp mảng này theo thứ tự bảng chữ cái, bạn cần sử dụng hàm so sánh tùy chỉnh để chuyển đổi tất cả các phần tử thành cùng một trường hợp, ví dụ: chữ hoa để so sánh và chuyển hàm đó sang phương thức

[ 0, 1, 10, 2, 20, 3, 30 ]

Code language: JSON / JSON with Comments (json)
4.

nodes = [[{ distance: 15 }], [{ distance: 123 }], [{ distance: 2 }]];

function sortNodes([a], [b]) {
    return a.distance - b.distance
}
console.log(nodes.slice(0).sort(sortNodes));
6

Output:

nodes = [[{ distance: 15 }], [{ distance: 123 }], [{ distance: 2 }]];

function sortNodes([a], [b]) {
    return a.distance - b.distance
}
console.log(nodes.slice(0).sort(sortNodes));
7

Sắp xếp một mảng các chuỗi với các ký tự không phải ASCII

Phương pháp

[ 0, 1, 10, 2, 20, 3, 30 ]

Code language: JSON / JSON with Comments (json)
4 đang hoạt động tốt với & nbsp; chuỗi với & nbsp; các ký tự ASCII. Tuy nhiên, đối với các chuỗi có ký tự không phải ASCII, ví dụ: & nbsp; é, è, v.v., phương pháp

[ 0, 1, 10, 2, 20, 3, 30 ]

Code language: JSON / JSON with Comments (json)
4 sẽ không hoạt động chính xác. Ví dụ:

nodes = [[{ distance: 15 }], [{ distance: 123 }], [{ distance: 2 }]];

function sortNodes([a], [b]) {
    return a.distance - b.distance
}
console.log(nodes.slice(0).sort(sortNodes));
8

Như bạn thấy, chuỗi

[ 0, 1, 2, 3, 10, 20, 30 ]

Code language: JSON / JSON with Comments (json)
4 sẽ đến & nbsp; trước chuỗi

[ 0, 1, 2, 3, 10, 20, 30 ]

Code language: JSON / JSON with Comments (json)
5.

Để giải quyết điều này, bạn sử dụng phương pháp

[ 0, 1, 2, 3, 10, 20, 30 ]

Code language: JSON / JSON with Comments (json)
6 của đối tượng

[ 0, 1, 2, 3, 10, 20, 30 ]

Code language: JSON / JSON with Comments (json)
7 để so sánh các chuỗi trong một địa điểm cụ thể, như thế này:

nodes = [[{ distance: 15 }], [{ distance: 123 }], [{ distance: 2 }]];

function sortNodes([a], [b]) {
    return a.distance - b.distance
}
console.log(nodes.slice(0).sort(sortNodes));
9

Output:

let numbers = [0, 1 , 2, 3, 10, 20, 30 ]; numbers.sort(); console.log(numbers);

Code language: JavaScript (javascript)
0

Các yếu tố của mảng

[ 0, 1, 2, 3, 10, 20, 30 ]

Code language: JSON / JSON with Comments (json)
8 hiện đang theo đúng thứ tự.

Sắp xếp một mảng các số

Giả sử bạn có một loạt các số có tên

[ 0, 1, 2, 3, 10, 20, 30 ]

Code language: JSON / JSON with Comments (json)
9 như trong ví dụ sau.

let numbers = [0, 1 , 2, 3, 10, 20, 30 ]; numbers.sort(); console.log(numbers);

Code language: JavaScript (javascript)
1

Để sắp xếp một mảng các số bằng số, bạn cần chuyển vào hàm so sánh tùy chỉnh so sánh hai số.

Ví dụ sau đây sắp xếp mảng

[ 0, 1, 2, 3, 10, 20, 30 ]

Code language: JSON / JSON with Comments (json)
9 bằng số theo thứ tự tăng dần.

let numbers = [0, 1 , 2, 3, 10, 20, 30 ]; numbers.sort(); console.log(numbers);

Code language: JavaScript (javascript)
2

Output:

let numbers = [0, 1 , 2, 3, 10, 20, 30 ]; numbers.sort(); console.log(numbers);

Code language: JavaScript (javascript)
3

Để sắp xếp một mảng số bằng số theo thứ tự giảm dần, bạn chỉ cần đảo ngược logic trong Chức năng so sánh & nbsp;

let numbers = [0, 1 , 2, 3, 10, 20, 30 ]; numbers.sort(); console.log(numbers);

Code language: JavaScript (javascript)
4

Output:

let numbers = [0, 1 , 2, 3, 10, 20, 30 ]; numbers.sort(); console.log(numbers);

Code language: JavaScript (javascript)
5

Sắp xếp một mảng các đối tượng theo một thuộc tính được chỉ định

Sau đây là một mảng của các đối tượng

let numbers = [0, 1 , 2, 3, 10, 20, 30 ]; numbers.sort((a,b) => { if(a > b) return 1; if(a < b) return -1; return 0; }); console.log(numbers);

Code language: JavaScript (javascript)
1, trong đó mỗi đối tượng chứa ba thuộc tính: ________ 82, ________ 83 và

let numbers = [0, 1 , 2, 3, 10, 20, 30 ]; numbers.sort((a,b) => { if(a > b) return 1; if(a < b) return -1; return 0; }); console.log(numbers);

Code language: JavaScript (javascript)
4.

let numbers = [0, 1 , 2, 3, 10, 20, 30 ]; numbers.sort(); console.log(numbers);

Code language: JavaScript (javascript)
6

Sắp xếp các đối tượng theo một thuộc tính số

Ví dụ sau đây cho thấy cách sắp xếp nhân viên theo

let numbers = [0, 1 , 2, 3, 10, 20, 30 ]; numbers.sort((a,b) => { if(a > b) return 1; if(a < b) return -1; return 0; }); console.log(numbers);

Code language: JavaScript (javascript)
3 theo thứ tự tăng dần.

let numbers = [0, 1 , 2, 3, 10, 20, 30 ]; numbers.sort(); console.log(numbers);

Code language: JavaScript (javascript)
7

Output:

Hướng dẫn sort array by subarray value javascript - sắp xếp mảng theo giá trị subarray javascript

Ví dụ này tương tự như ví dụ về việc sắp xếp một mảng các số theo thứ tự tăng dần. Sự khác biệt là nó so sánh thuộc tính

let numbers = [0, 1 , 2, 3, 10, 20, 30 ]; numbers.sort((a,b) => { if(a > b) return 1; if(a < b) return -1; return 0; }); console.log(numbers);

Code language: JavaScript (javascript)
3 của hai đối tượng thay thế.

Sắp xếp các đối tượng theo thuộc tính chuỗi

Để sắp xếp mảng

let numbers = [0, 1 , 2, 3, 10, 20, 30 ]; numbers.sort((a,b) => { if(a > b) return 1; if(a < b) return -1; return 0; }); console.log(numbers);

Code language: JavaScript (javascript)
7 theo

let numbers = [0, 1 , 2, 3, 10, 20, 30 ]; numbers.sort((a,b) => { if(a > b) return 1; if(a < b) return -1; return 0; }); console.log(numbers);

Code language: JavaScript (javascript)
2 Case Case-Incalition, bạn vượt qua hàm so sánh & nbsp; so sánh hai chuỗi không nhạy cảm như sau:

let numbers = [0, 1 , 2, 3, 10, 20, 30 ]; numbers.sort(); console.log(numbers);

Code language: JavaScript (javascript)
8Sorting đối tượng theo thuộc tính ngày
Hướng dẫn sort array by subarray value javascript - sắp xếp mảng theo giá trị subarray javascript

Sorting objects by the date property

Giả sử, bạn muốn sắp xếp nhân viên dựa trên mỗi ngày thuê nhân viên.

Dữ liệu ngày thuê được lưu trữ & nbsp; trong thuộc tính

let numbers = [0, 1 , 2, 3, 10, 20, 30 ]; numbers.sort((a,b) => { if(a > b) return 1; if(a < b) return -1; return 0; }); console.log(numbers);

Code language: JavaScript (javascript)
4 của đối tượng nhân viên. Tuy nhiên, nó chỉ là một chuỗi đại diện cho một ngày hợp lệ, không phải đối tượng

let numbers = [0, 1, 2, 3, 10, 20, 30]; numbers.sort((a, b) => a - b); console.log(numbers);

Code language: JavaScript (javascript)
0. & NBSP;

Do đó, để sắp xếp nhân viên theo ngày thuê, trước tiên bạn phải tạo một đối tượng

let numbers = [0, 1, 2, 3, 10, 20, 30]; numbers.sort((a, b) => a - b); console.log(numbers);

Code language: JavaScript (javascript)
0 hợp lệ từ chuỗi ngày, sau đó so sánh hai ngày, giống như so sánh hai số.

Đây là giải pháp:

let numbers = [0, 1 , 2, 3, 10, 20, 30 ]; numbers.sort(); console.log(numbers);

Code language: JavaScript (javascript)
9Optimizing mảng JavaScript

[ 0, 1, 10, 2, 20, 3, 30 ]

Code language: JSON / JSON with Comments (json)
4 Phương pháp
Hướng dẫn sort array by subarray value javascript - sắp xếp mảng theo giá trị subarray javascript

Optimizing JavaScript Array [ 0, 1, 10, 2, 20, 3, 30 ]Code language: JSON / JSON with Comments (json)4 method

Trong & nbsp; thực tế, phương thức

[ 0, 1, 10, 2, 20, 3, 30 ]

Code language: JSON / JSON with Comments (json)
4 gọi hàm so sánh nhiều lần cho mỗi phần tử trong mảng.

Xem ví dụ sau:

[ 0, 1, 10, 2, 20, 3, 30 ]

Code language: JSON / JSON with Comments (json)
0

Output:

[ 0, 1, 10, 2, 20, 3, 30 ]

Code language: JSON / JSON with Comments (json)
1

Làm thế nào nó hoạt động:

  1. Đầu tiên, tuyên bố & nbsp; một mảng

    let numbers = [0, 1, 2, 3, 10, 20, 30]; numbers.sort((a, b) => a - b); console.log(numbers);

    Code language: JavaScript (javascript)
    4 bao gồm các tên sông nổi tiếng.
  2. Thứ hai, sắp xếp & nbsp; mảng

    let numbers = [0, 1, 2, 3, 10, 20, 30]; numbers.sort((a, b) => a - b); console.log(numbers);

    Code language: JavaScript (javascript)
    4 theo độ dài của phần tử & nbsp; sử dụng phương thức

    [ 0, 1, 10, 2, 20, 3, 30 ]

    Code language: JSON / JSON with Comments (json)
    4. Chúng tôi & nbsp; xuất các phần tử của mảng

    let numbers = [0, 1, 2, 3, 10, 20, 30]; numbers.sort((a, b) => a - b); console.log(numbers);

    Code language: JavaScript (javascript)
    4 vào bảng điều khiển web bất cứ khi nào phương thức

    [ 0, 1, 10, 2, 20, 3, 30 ]

    Code language: JSON / JSON with Comments (json)
    4 gọi hàm so sánh.

Như thể hiện trong đầu ra ở trên, mỗi phần tử đã được đánh giá nhiều lần, ví dụ, Amazon 4 lần, Congo 2 lần, v.v.

Nếu số lượng các phần tử mảng đang tăng lên, nó sẽ có khả năng làm giảm hiệu suất.

Bạn không thể giảm số lần chức năng so sánh được thực thi. Tuy nhiên, bạn có thể giảm công việc mà so sánh phải làm. Kỹ thuật này được gọi là biến đổi Schwartzian.

Để thực hiện & nbsp; điều này, bạn làm theo các bước sau:

  1. Đầu tiên, trích xuất các giá trị thực tế vào một mảng tạm thời & nbsp; bằng phương thức map ().
  2. Thứ hai, sắp xếp mảng tạm thời với & nbsp; các yếu tố đã được đánh giá (hoặc biến đổi).
  3. Thứ ba, đi bộ mảng tạm thời để có được một mảng với & nbsp; đúng thứ tự.

Đây là giải pháp:

[ 0, 1, 10, 2, 20, 3, 30 ]

Code language: JSON / JSON with Comments (json)
2

Output:

[ 0, 1, 10, 2, 20, 3, 30 ]

Code language: JSON / JSON with Comments (json)
3

Trong hướng dẫn này, bạn đã học được cách sử dụng phương thức mảng JavaScript

[ 0, 1, 10, 2, 20, 3, 30 ]

Code language: JSON / JSON with Comments (json)
4 để sắp xếp các mảng, số, ngày và đối tượng.

Hướng dẫn này có hữu ích không?