Шутейка норм , картинка хуета
Сайт норм, твой коммент говно.
Просто манкикодеры не в курсе что по умолчанию JS использует лексикографическую сортировку для данного метода и что в качестве аргумента можно передать функцию которая и будет определять порядок сортировки.
Но хейтить JS, это ж не спецификацию изучить....
Но хейтить JS, это ж не спецификацию изучить....
не хейтить жс и потом сидеть и жаловаться хуле хром жрёт оперативку
это норма!
это норма!
Как бы в нормальных языках программирования базовые типы сортируются как нужно: Числа по возрастанию, а буквы по алфавиту.
В JS нетипизированные массивы, потому по-умолчанию все элементы приводятся к строке в момент сравнения.
Ну и...? Объясни почему я должен это считать за преимущество, а не упущение в архитектуре? В C# давно тоже были списки нетипизированные, но через пару лет ввели дженерики.
а кто сказал что это преимущество?
Ну типа ex1st, говорит, что говно не может быть говном, если там описано в стандартах.
На дворе 2019 год. Почему нельзя запилить нормальную сортировку и уйти от спорных решений?
Они вон нормальное наследование только в 2015 году добавили...
На дворе 2019 год. Почему нельзя запилить нормальную сортировку и уйти от спорных решений?
Они вон нормальное наследование только в 2015 году добавили...
Оно не отличается ничем от того наследования, которое присутствовал раньше.
Потому что поведение одно - захреначь ты туда строку, число или чёрта в ступе. Его просто нужно знать(прочитав доку по методу).
В этом изначальная суть js: срать на типы - полная свобода (говно)кода.
Тебе может это не нравиться, тебе может даже это быть отвратительно, но это чувство свободы - именно то самое "преимущество" о котором ты спрашиваешь.
То, что ты пытаешься приплести дженерики и снова свести всё к ручной типизаци - явно показывает, что ты не улавливаешь этой самой "изначальной сути" js.
Конечно я бы добавил в современный js и дженерики и типизацию - но исключительно опционально, чтоб не заниматьсяонанизмом типоблудием там где это не нужно.
Пока же можно юзать typescript.
В этом изначальная суть js: срать на типы - полная свобода (говно)кода.
Тебе может это не нравиться, тебе может даже это быть отвратительно, но это чувство свободы - именно то самое "преимущество" о котором ты спрашиваешь.
То, что ты пытаешься приплести дженерики и снова свести всё к ручной типизаци - явно показывает, что ты не улавливаешь этой самой "изначальной сути" js.
Конечно я бы добавил в современный js и дженерики и типизацию - но исключительно опционально, чтоб не заниматься
Пока же можно юзать typescript.
Хз. Этот JavaScript позволяет такой отборочный говно-код делать и говяные практики не присекаются на стороне самого языка.
Да почти все языки с динамической типизацией позволяют так делать. Именно поэтому код на них, как правило, раз в пять короче и читабельнее.
В JS нет стандарта на алгоритм сортировки, потому результаты могут отличаться в разных движках (или даже их версиях).
https://v8.dev/blog/array-sort
https://github.com/nodejs/node/issues/27871
https://v8.dev/blog/array-sort
https://github.com/nodejs/node/issues/27871
в V8 (первый линк) - прямо на писано: "The “default” comparison function calls toString on both values and does a lexicographical comparison on the string representations."
по второму линку, проблема в конкретной версии (а точнее в ее авторах), стандарт четно прописывает:
- отрицательное значение, если второй аргумент больше первого;
- 0 - если равны;
- положительное, если первый аргумент больше второго.
Это проблема не языка, а разработчика.
Разные компиляторы С/С++ по разному считают выражение (++i + ++i), но почему-то С/С++ не хейтится, а возводится в идеал
по второму линку, проблема в конкретной версии (а точнее в ее авторах), стандарт четно прописывает:
- отрицательное значение, если второй аргумент больше первого;
- 0 - если равны;
- положительное, если первый аргумент больше второго.
Это проблема не языка, а разработчика.
Разные компиляторы С/С++ по разному считают выражение (++i + ++i), но почему-то С/С++ не хейтится, а возводится в идеал
Ну так-то в С/С++ это неопределенное поведение и прямо говорится, что нужно избегать таких конструкций.
Я не спорю и не хейтю, я лишь указал, что для Array.prototype.sort нет стандарта на алгоритм сортировки, потому Quick Sort и Stable Sort по разному ставят элементы при одинаковых результатах сравнения. Мой посыл неправильно поняли.
Ну а в чем проблема его ввести? На дворе 2019 год и веб наконец-то более менее был стандартизирован благодаря тому, что почти все используют один и тот же движок. Обратная совместимость? Так введите ключевое слово 'USE Legacy', чтобы не сломать старый код.
> потому Quick Sort и Stable Sort по разному
Стабильная сортировка - это не название алгоритма сортировки. Это его свойство. Ваша фраза означает приблизительно следующее:
Фрукты бывают яблоки и красные.
Quick Sort может быть и стабильным, и нестабильным, зависимо от реализации.
И да, спецификация не гарантирует, что в языке будет использоваться стабильный алгоритм сортировки.
Кстати, так же она не гарантирует сохранность порядка ключей в хеше
Стабильная сортировка - это не название алгоритма сортировки. Это его свойство. Ваша фраза означает приблизительно следующее:
Фрукты бывают яблоки и красные.
Quick Sort может быть и стабильным, и нестабильным, зависимо от реализации.
И да, спецификация не гарантирует, что в языке будет использоваться стабильный алгоритм сортировки.
Кстати, так же она не гарантирует сохранность порядка ключей в хеше
Ну потому что кто на полном серьёзе будет так делать? А вот сортировка нужна всем
Чувак, UB никак не регламентируется.
Разница с С/С++ в том, что (по теме сортировки) есть библиотеки, которые гарантируют (или нет) результат.
Boost к примеру тебе даст выбор, а ты думай - быстрее или точно.
А в JS такого выбора нет, как браузер решил - так будет.
Вот где жопа.
А ты думал почему все хейтят JS?
Разница с С/С++ в том, что (по теме сортировки) есть библиотеки, которые гарантируют (или нет) результат.
Boost к примеру тебе даст выбор, а ты думай - быстрее или точно.
А в JS такого выбора нет, как браузер решил - так будет.
Вот где жопа.
А ты думал почему все хейтят JS?
Ну так укажи compareFunction и все браузеры будут сортировать именно так, как ты решил.
Умный? Суть в том, что сишка результатом имеет машинный код до клиента, как бы что кодер решил (ядро ОС, к примеру), я JS - джит решает, и каждый браузер сам думает... Ты явно тупой.
Еще раз, для джунов. Читай медленно: ты можешь явно задать функцию сравнения. Сравнения функцию. Явно. Для сортировки. Можешь задать. Ты. И она будет одинаково работать на всех браузерах. И сортировать будет одинаково.
Если ты не задаешь функцию - ты сталкиваешься с умолчаниями, которые могут отличаться.
P.S.: А чего ты тогда не гонишь заодно на Яву и вообще все языки-интерпретаторы? Там нет "машинного кода до клиента".
Если ты не задаешь функцию - ты сталкиваешься с умолчаниями, которые могут отличаться.
P.S.: А чего ты тогда не гонишь заодно на Яву и вообще все языки-интерпретаторы? Там нет "машинного кода до клиента".
о, Ливадийский дворец
Чтобы написать коммент, необходимо залогиниться