Сортировка вложенных массивов

106
23 ноября 2020, 16:20

Необходимо отсортировать массивы по числовому показателю в последнем индексе каждого массива. То есть, в массиве mass, в коде ниже, mass[2] должен оказаться на mass[0], а остальные должны сместиться на 1 ступень. Пытался сделать при помощи sort, но особым успехом это не увенчалось.

var mass = [ 
["Вася", "Петров", "Александрович", "10"], 
["Петя", "Иванов", "Петрович", "15"], 
["Владимир", "Ленин", "Ильич", "9"] ] 
 
mass.sort(compare); 
 
function compare(a, b){ 
  if (a[a.length-1] > b[b.length-1]) return 1; 
  if (a[a.length-1] < b[b.length-1]) return -1; 
} 
console.log(mass);

Answer 1

Для сравнения необходимо приводить строку, которой представлен последний элемент массива, к числу.

В коде ниже это делается за счет + перед a[a.length-1], ну и я слегка упростил функцию compare

var mass = [ 
["Вася", "Петров", "Александрович", "10"], 
["Петя", "Иванов", "Петрович", "15"], 
["Владимир", "Ленин", "Ильич", "9"] ] 
 
mass.sort(compare); 
 
function compare(a, b){ 
  return +a[a.length-1] - b[b.length-1] 
} 
console.log(mass);

READ ALSO
Синтаксис замыканий в JS

Синтаксис замыканий в JS

Первый раз столкнувшись с замыканиями и не зная, что это такое, пробовал синтаксически понять, что происходит в коде вида: (function(){})()Известно,...

101
непонятно поведение prototype

непонятно поведение prototype

почему код срабатывает лишь в третьем случае

116
select на всю оставшуюся ширину

select на всю оставшуюся ширину

Есть контейнер фиксированной шириныВ нем нужно расположить 3 элемента:

101