Может кто-нибудь подробно объяснить, как отображение этого массива работает шаг за шагом - PullRequest
0 голосов
/ 14 апреля 2020

Исходный массив: [[3, 5], [9, 6], [3,1]]

1) Сделать первое число в каждом мини-массиве меньшим числом, а второе число в у каждого мини-массива большее число - [[3, 5], [9, 6], [3,1]] -> [[3,5], [6,9], [1,3]]

2) Сортировка мини-массивов по первому номеру. - [[3,5], [6,9], [1,3]] -> [[1,3], [3,5], [6,9]]

Итак [[ 3, 5], [9, 6], [3,1]] -> [[1,3], [3,5], [6,9]] к концу преобразования сортировки.

Может ли кто-нибудь объяснить в пошаговом, подробном, ясном и кратком виде, как использовать array.map (), чтобы это произошло?

1 Ответ

0 голосов
/ 14 апреля 2020

Используйте 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]]`;

Этот процесс будет продолжаться, пока ваш массив не будет отсортирован.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...