var arr = ['bla','hahahah','123456789','1','ew'];
function lensort(a,b)
{
var s1 = "" + a; // Что это за переменная?
var s2 = "" + b; // а это?
if(s1.length < s2.lenght){
return false;
}
else if(s1.length > s2.length){
return true;
}
}
console.log(arr.sort(lensort)) --> arr["1", "ew", "bla", "hahahah", "123456789"]
как эта функция отсортировала массив по длине его элементов?
Как описан Grundy, тут основной момент играет использование метода sort. По сути, функция lensort представляет собой "критерий выбора". Т.е. метод sort отдает методу lensort 2 значения. Т.е. на первом шаге оно выдало в метод lensort значения arr[0] и arr[1] ( 'bla','hahahah'). Далее помечу в коде что и как:
function lensort(a,b)
{
var s1 = "" + a; // Это первый параметр или arr[0]
var s2 = "" + b; // это второй параметр или arr[1]
// по сути тут мы однозначно получаем строки s1 и s2 типа string
if(s1.length < s2.lenght){
return false; // элементы на своих позициях по возрастанию
}
else if(s1.length > s2.length){
return true; // элемент arr[0] больше и его мы будет "двигать" вправо по массиву
}
}
В итоге, когда ваша функция lensort возвращает true, то метод sort делает решение что первый элемент "больше" второго и смешает его правее. И дальше итерация перемещается дальше и сравнивает другие 2 значения, например arr[1] и arr[2] (в зависимости от алгоритма, могут сравниваться первый элемент со всеми оставльными, или методом пузырька и т.п. смотрите "алгоритмы сортировки")
var s1 = "" + a;
так делают чтобы получить строку в любом случае, то есть если там будет 123456789 то оно может быть как string так и int, чтобы оно однозначно имело тип string делают такую хитрую операцию, таких хитростей много, например если мы хотим иметь всегда какое-то значение то делаем так
var s = object.param || "строка";
и тогда даже если string будет object.param не будет существовать в переменной s будет значение "строка" ,а не undefined.
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости