Используйте map
для размещения nested array
numbers
в порядке возрастания, затем примените sort
на основе first number
во вложенном массиве.
const arr = [
[3, 5],
[9, 6],
[3, 1]
];
const sortedArr = arr
.map(([num1, num2]) => num2 < num1 ? [num2, num1] : [num1, num2])
.sort(([arr1num1], [arr2num1]) => arr1num1 - arr2num1);
console.log(sortedArr);
- Правка -
Результат карты
[[3, 5], [6, 9], [1, 3]];
В функции сортировки я делаю деструктуризацию массива ( см. - https://javascript.info/destructuring-assignment). По сути, я извлекаю только первый элемент из массива и сохраняю его в отдельной переменной. В нашем случае arr1num1
и arr2num1
.
Пример -
const arr = [3, 5];
// Extracting the first element from array and saving in variable - arr1num1.
// I do not need second array element 5, so i did not extracted the second array element
const [arr1num1] = arr; // arr1num1 will have now value 3
console.log(arr1num1);
// If second array element is also required, then the above statement will become const [num1, num2] = arr; where num1 -> 3 and num2 ->5
В качестве альтернативы вышеприведенному будет прямой доступ к элементам массива с использованием там индекса.
const arr = [
[3, 5],
[9, 6],
[3, 1]
];
const sortedArr = arr
.map(([num1, num2]) => num2 < num1 ? [num2, num1] : [num1, num2])
.sort((arr1, arr2) => arr1[0] - arr2[0]);
console.log(sortedArr);
Чтобы узнать больше о сортировке, см. - Сортировка
Как работает сортировка,
В первой итерации, замена [3, 5] и [6, 9] произойдет в зависимости от условия сортировки.
arr1num1 -> 3
arr2num1 -> 6
Оператор arr1num1 - arr2num1
проверит, больше ли 3
чем 6
. Если да, это поменяет местами массивы [3, 5] и [6, 9]. Так как 3 не больше 9, поэтому перестановка не будет.
Вторая итерация, перестановка [6, 9] и [1, 3] произойдет в зависимости от условия.
arr1num1 -> 6
arr1num2 -> 1
Поскольку, 6> чем 1, произойдет обмен.
Before Swapping array will be- `[[3, 5], [6, 9], [1, 3]]`;
After Swapping array will be - `[[3, 5], [1, 3], [6, 9]]`;
Этот процесс будет продолжаться, пока ваш массив не будет отсортирован.