Вадим
благодарю
Maksim
это в 2 прохода, так не интересно
Ivan
это в 2 прохода, так не интересно
Лучше в цикле искать мин и его индекс? 😅
Maksim
[3,2,1].reduce(([index, value], item, i) => item < value ? [i, item] : [index, value], [0, Infinity])[0];
Ivan
[3,2,1].reduce(([index, value], item, i) => item < value ? [i, item] : [index, value], [0, Infinity])[0];
Reduce для каждого элемента будет выполнять анонимную функцию, для больших массивов не подходит
Pavel
и не читабельно
Anonymous
@hitmaker
Dan
@hitmaker
console.log('Done');
Anonymous
:D
Vladislav
arr.indexOf(Math.min(...arr))
Если есть это
Maksim
2 прохода vs 1 проход
Maksim
Если есть это
что будешь делать когда в массиве будет не число, а [{value: 1}, {value: 2}]?
Anonymous
2 прохода vs 1 проход
ну тогда сортировку делаешь и выводишь первый элемент [3,2,1].sort((a,b)=>a-b)[0]
Anonymous
в это и плох жс что производительный код тяжело читаем
Pavel
а в каком языке производительный код легко четаем?
Maksim
в это и плох жс что производительный код тяжело читаем
это не проблема js, всегда можно написать абстракцию к тому же в 1 проход обычно не нужно в прикладных задачах и к тому же если уж действительно нужно в 1 проход, то это даже не reduce будет точно
Anonymous
по факту в твой подход ничем не отличается даже по результативности от выше предложенного
Maksim
по факту в твой подход ничем не отличается даже по результативности от выше предложенного
На больших массивах отличается в 2 раза производительность По крайней мере должна
Pavel
пруфы давай
Maksim
Тебе надо ты и тести, мне это не интересно
Anonymous
Ошибаешься очень сильно
Maksim
Кстати количество аргументов функции ограничено, так что юзать Math.min(...args) чревато на больших данных
Pavel
а пруфы будут или зассал?
Anonymous
Hi, I'm feifei and nice to meet you
Pavel
зассал значит
Maksim
Поищи своих ровесников для такой аргументации
Edgar
А чем это reduce был плох?
Pavel
трудно поддерживаемый код
Edgar
Как бы разумеется ни кто не стал бы в таком виде писать, его нужно вывести в отдельную функцию и читатся норм будет
Edgar
Просто если уж отказатся от for/while то это самый производительный вариант
Maksim
Как бы разумеется ни кто не стал бы в таком виде писать, его нужно вывести в отдельную функцию и читатся норм будет
ессно, я и написал что это надо абстрагировать до minIndex(array, getter); а имплементация уже как угодно
Maksim
А чем ограничено?)
имплементацией браузера https://stackoverflow.com/questions/22747068/is-there-a-max-number-of-arguments-javascript-functions-can-accept
stay
Edgar
Там еще писали что выполнять функцию для каждого элемента будет медленно, хотя в моих тестах стрелочные функции почти не замедляют код(в отличии от не стрелочных)
Maksim
Там еще писали что выполнять функцию для каждого элемента будет медленно, хотя в моих тестах стрелочные функции почти не замедляют код(в отличии от не стрелочных)
движок соптимизирует это, нагрузки не будет функция не создается же на каждую итерацию, а всего одна так что да, это было заблуждение
Maksim
для reduce колбэк создастся только один раз так же как для map и filter и вообще любой колбэк в момент вызова
Edgar
Ты хочешь сказать что в , допустим, reduce, по скорости не важно колбеу стрелочная или нет?
Maksim
какие могут быть сомнения
Edgar
А в моих тестах разница на больших массивах (100млн) было заметно, отсюда и посчитал что не стрелочный колбек создается заного
Maksim
есть код?
Edgar
Да
Maksim
запуск нативный или через транспилер был?
Edgar
Кода не осталось, можешь сам сделать, только на локалке не делай, а то другие процессы помешают. Лучше на repl.it
Edgar
Я думаю это из-за того что не стрелочные имеют this, т.е мб на создание this время уходит
Maksim
Я думаю это из-за того что не стрелочные имеют this, т.е мб на создание this время уходит
функция создается только один раз, на больших данных не может быть разницы
Maksim
const array = Array(10000000).fill(1); console.time("start1"); console.log(array.reduce((result, i) => i + result)); console.timeEnd("start1"); console.time("start2"); console.log( array.reduce(function(result, i) { return result + i; }) ); console.timeEnd("start2"); примерно одинаковое время на нескольких запусках
Edgar
Ну может там оптимизация какая нибудь, попробуй сначала не стрелочную
Maksim
да все то же самое
Edgar
да все то же самое
да.. кажется ошыбся
Iv
Просто, к слову
Anonymous
Привет. Не могли бы подсказать книгу по изучению ОС и компьютера?
Pavel
windows для чайников
Pavel
Таненбаум. Архитектура компьютера
а ты на чьей стороне в споре между таненбаумом и торвальдсом?
Pavel
оба правы или не шаришь?
Maksim
не моя специализация
Dan
Китайская угроза? (c)
Stas
Ребята такой вопрос. В зависимости от ширины экрана меню появляеться в 3х различных местах. Насколько будет правельным сделать это с помощью js или же всетаки по класике display none
Stas
зачем использовать JS, если можно обойтись CSS?
Ну если на css то это в кое будет целых 4 одинаковых кода (4 если учитывать еще и мобильное меню) Движ ларавел и шаблонизатор недаст правельно реализовать смену положений блоков на css