Size: a a a

2021 April 11

А

Александр in JS Liberty
))))
источник

DE

Denis Efremov in JS Liberty
Из другого теста)
источник

В

Виктория in JS Liberty
const filter = (iter, { done, value: [_, entry] = [] } = iter.next(), obj = {}) =>
 done
   ? obj
   :  filter(
     iter,
     iter.next(),
     Object.assign(
       obj,
       entry[1] === false
         ? obj
         : { [entry[0]]: entry[1] }
     )
   )
   
  filter(Object.entries(obj).entries())
источник

В

Виктория in JS Liberty
А вот это?
источник

А

Александр in JS Liberty
это в 4-5 раз быстрее предыдущей функции. На скрине скорость для 4000. Но все равно не подходит для больших объектов.  4400 свойств берет, а 4500 уже пишет ошибку "Maximum call stack size exceeded"

Даже если можно этот размер стека где-то увеличить, то все равно она обрабатывает 4000 со скоростью, как функция Дениса с фильтром 500 тыс.
Итог: в разы быстрее предыдущей, но не лучший вариант((

Не лень тебе было писать такое сложное?)) можно придумать какой-то надежный способ мерять скорость и устраивать конкурсы, кто более быстрое решение для несложной задачи напишет с призовым фондом))
источник

А

Александр in JS Liberty
источник

В

Виктория in JS Liberty
А знаешь почему метод с delete быстрее всех?
Что в обычном цикле что через forEach?
А потому что это мутация, мы работаем с самим объектом, изменяя его.
Во всех остальных вариантах создается новый объект
источник

А

Александр in JS Liberty
а... ну это да, звучит логично)
источник

А

Александр in JS Liberty
сильно на скорость влияют методы, связанные с созданием, получается
источник

p

persona x grata in JS Liberty
Потому что это O(1), прямое обращение к свойству
источник

DE

Denis Efremov in JS Liberty
А как же set?
источник

p

persona x grata in JS Liberty
его тоже можно удалить оператором delete
источник

DE

Denis Efremov in JS Liberty
Кого? Дескриптор set?
источник

p

persona x grata in JS Liberty
источник

DE

Denis Efremov in JS Liberty
Ты удалишь переназначенное им  действие
источник

p

persona x grata in JS Liberty
я честно с этим мало работал
источник

DE

Denis Efremov in JS Liberty
Только удалив свойство, можно стереть дескрипторы.
источник

В

Виктория in JS Liberty
А еще я выяснила один интересный момент:
Object.entries работает медленнее, чем Object.keys

Попробуй вот это запустить:
Object.entries(obj).forEach((entry) => entry[1] === false && delete obj[entry[0]])
источник

В

Виктория in JS Liberty
Да не в этом дело вообще
источник

МГ

Мишки Гамми... in JS Liberty
entries композирует логику кейс вольюс и потом сверху это еще наверное и чанкает, в таком духе, может иначе сделано просто
источник