Дима
и как же?
switch (true) {
case index < 9: return 1
case index < 12: return 8
case index < 15: return 11
default: return 14
}
Sheldhur
можно будет ещё позицию добавить
Дима
Вы загоняетесь
Костя
Костя
Sheldhur
Дима
Ну как бы да
Костя
так что насчёт связи?
Дима
Но вы всё равно люто загнались
Oleksandr
Ну связь как бы есть
Костя
неужели нету никакой связи между index & position?
Дима
Какие связи вообще))
Sheldhur
лал
Sheldhur
естьже
Дима
Я про то, что вы загнались, а не про то, что связей нет)
Костя
а ещё можно так
Sheldhur
Konstantin
да можно словарь сделать где диапазоны
Konstantin
и пробежаться
Костя
1. создать бинарное дерево,
2. записать в него позициями по ключу минимальных индексов
3. искать ближайший вниз индекс
Konstantin
но это какие-то не очевидные изъёбства
Дима
Oleg
Заметте какой баг - изначально 14 в позиции будет только и только тогда, когда индекс равен 15, строго равен. А все примеры дальше это упускают. А ведь может быть кейс что индекс будет иным и тогда позишн будет неравен ничему
Дима
const reducer =
num => (acc, val) =>
num > val
? val
: acc
const tester = ( num, list ) => list.reduce( reducer( num ) )
const arr = [ 1, 8, 11, 15 ]
tester( 10, list )
// => 8
Дима
КАКОЕ К ЧЕРТЯМ БИНАРНОЕ ДЕРЕВО 😂
Konstantin
рамда какая-то)
Костя
Oleksandr
Что-то всё только усложняется) Оставлю-ка ифы)
Oleg
Выглядит безумно
Дима
Обычный редюсер-сравнение, безумно?)
Костя
можно попробовать договориться, чтобы добавили в стандарт ecmascript2017 "case a..b"
Oleg
Увы
Дима
Дима
Увы
Эту функцию значительно проще понимать и отлаживать, чем монолитный блок сравнений и ифов
Костя
Дима
Смишно
Дима
Pattern matching это когда в switch просто можно действительно выполнять условия
Дима
И всё
Oleg
Вообще самый правильный вариант тут конечно свичкейс с тру с закидыванием в функцию чтобы юзать ретурн без бриков. А если функция не в тему - тогда просто ифы. Остальные варианты может быть хороши в некоторых случаях, но тут очень императивное такое сравнение чтобы юзать что-то особое.
Oleksandr
Написал так
switch (index) {
case 15:
position = 14;
break;
case 14:
position = 11;
break;
case 11:
position = 8;
break;
case 8:
position = 1;
}
Дима
Я не понимаю ,чем тебя смущает примитивная функция с единственной операцией — сравнением и стандартная функциональность es6
Дима
Разве что тем, что её в extJS нету)0
Костя
Oleksandr
(цикл for выполняется с декриментом)
Konstantin
extJs кусок говна
Oleg
Началось
Дима
Дима
Когда из-за отсутствия es6 не пользуются базовыми фичами нормального программирования
Дима
Я чот злой сегодня какой-то, сорян
Дима
Закругляюсь
Костя
простите, разве речь не о чистом js, без фреймворков, который нормально живёт?
Дима
es6 теперь фреймворк?
Дима
Дожили)
Костя
да блеа
Костя
нет
Dreamerinnoise
Oleg
А ведь всё началось с просто else if 😄
Nikolay
Костя
как можно писать сейчас на es6?
Oleg
Вообще я пишу на ES6 на ноде 6.9
Костя
я имею в виду, что просто так это в браузерах работать не будет
Костя
а
Костя
ну так то нода
Oleg
На фронте увы
Костя
или задача как раз к ноде и относится?
Дима
Дима
Без примочек — это в один файл и инклудить руками?
Oleg
Костя
так, чтобы оно стабильно работало во всём говне, которое сейчас ещё живо, включая какой-то IE10
Дима
Не знаю, тут вроде второе десятилетие 21 века заканчивается
Дима
Костя
не считая реквайр или что там ещё в моде