Как стать автором
Обновить

Комментарии 21

если писать о новшествах, то лучше не использовать var в примерах)
Странно, bigint добавили, а bigfloat — нет.
А зачем?

Ну если вдруг понадобится не только складывать и вычитать числа, бОльшие чем Number.MAX_SAFE_INTEGER, но и делить/умножать (подразумевая наличие дробной части)


100000000000000000000000000000000000n / 3n
// 33333333333333333333333333333333333n
BigInt(100000000000000000000000000000000000 / 3)
// 33333333333333332287788702639325184n

Сейчас нет способа "не потерять дробную часть" средствами языка, но, вероятно, существуют библиотеки, решающие эту проблему.

Супер! Каждый раз с большим интересом читаю вашу подборку.
У меня вот только вопрос, почему safari нигде нет? Неужели ничего из написанного там сейчас не поддерживается?
НЛО прилетело и опубликовало эту надпись здесь
метод flatMap нужен для того, чтобы последовательно не вызывать flat и map, а просто вызвать flapMap.
НЛО прилетело и опубликовало эту надпись здесь
Все же map, затем flat.
И как я понял в flatMap нельзя указать «глубину подъема»?
НЛО прилетело и опубликовало эту надпись здесь
Спасибо за allSettled для промисов. Давно пора было
Странный метод .flatMap()
Мне кажется использовать для этих целей .reduce() очевиднее:
[1, 2, 3, 4].reduce((result, current) => result.concat(current, current * current), [])

Хотя… длиннее получается, да (: Может и правда есть смысл в этом методе (:
UPD. Так, надо ещё попробовать измерить производительность)

UPD2. Забудьте о том, что я писал выше… Это просто жесть какая-то)
const arr = Array(100000).fill(0).map((v, i) => i)

console.time('reduce')
arr.reduce((result, current) => result.concat(current, current * current), [])
console.timeEnd('reduce')

console.time('flatMap')
arr.flatMap(current => [current, current * current])
console.timeEnd('flatMap')
// reduce: 115254.64819335938ms
// flatMap: 64.10302734375ms

UPD3. При этом для небольших списков время почти одинаковое:
const arr = Array(10).fill(0).map((v, i) => i)

console.time('reduce')
arr.reduce((result, current) => result.concat(current, current * current), [])
console.timeEnd('reduce')

console.time('flatMap')
arr.flatMap(current => [current, current * current])
console.timeEnd('flatMap')
// reduce: 0.034912109375ms
// flatMap: 0.04296875ms


Диагноз: использовать, несомненно.
НЛО прилетело и опубликовало эту надпись здесь
Воу, спасибо за замечание, я как-то на фане быстро набросал и даже не подумал, что concat НАСТОЛЬКО зааффектит перфоманс (:
Подумаешь сложность на порядок поднял) Хотя здесь даже не на порядок получается, а на n! — поправьте меня, если я ошибаюсь, а то у меня ночь, я уже туго соображаю)
Например — 1000000000 — это один миллиард в десятичной системе счисления. Но с одного взгляда понять это тяжело.

1e9 :)

НЛО прилетело и опубликовало эту надпись здесь
В примерах с интернализацией стоило бы 'ru' использовать для большей очевидности этих самых примеров.
Вряд ли для Uday Hiwarale пример с ru был бы более очевидным
Ну так и статья не для Uday Hiwarale
То есть по вашему переводчик должен переводить и код тоже? Я с этим не согласен.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий