Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> JavaScript

Sắp xếp mảng theo mảng khác trong JavaScript

Giả sử chúng ta có hai mảng nguyên thủy như sau:

const arr1 = [1, 3, 2, 4, 5, 6]; const arr2 = [1, 2, 5];

Chúng ta cần viết hàm JavaScript nhận hai mảng như vậy. Hàm trả về mảng mới chứa tất cả phần tử của arr1 nhưng sắp xếp theo arr2.

Các phần tử xuất hiện trong cả hai mảng xuất hiện trước theo thứ tự trong mảng thứ hai, theo sau là các phần tử chỉ có trong mảng đầu tiên giữ nguyên thứ tự.

Ví dụ

Mã cho việc này:

const arr1 = [1, 3, 2, 4, 5, 6]; const arr2 = [1, 2, 5]; const sortByReference = (arr1, arr2) => {    const inBoth = el => arr1.indexOf(el) !== -1 && arr2.indexOf(el) !== -1;    const sorter = (a, b) => {       if(inBoth(a) && inBoth(b)){          return arr1.indexOf(a) - arr2.indexOf(b);       }       if(inBoth(a)){          return -1;       };       if(inBoth(b)){          return 1;       };       return 0;    };    arr1.sort(sorter); }; sortByReference(arr1, arr2); console.log(arr1);

Đầu ra

Kết quả trên console:

[ 1, 2, 5, 3, 4, 6 ]