Size: a a a

JavaScript — русскоговорящее сообщество

2020 October 08

NF

Nektamu Fox in JavaScript — русскоговорящее сообщество
Привет, нужно фильтрануть массив и разбить его на более маленькие массивы, сейчас реализация такая -
let videoArray = formatedSearch.filter((item) => item.document.searchable_type === 'Video')
   let sessionArray = formatedSearch.filter((item) => item.document.searchable_type === 'Session')
   let channelArray = formatedSearch.filter((item) => item.document.searchable_type === 'Channel')
   let userArray = formatedSearch.filter((item) => item.document.searchable_type === 'User')
   let recordingArray = formatedSearch.filter((item) => item.document.searchable_type === 'Recording')

Как это можно упростить и самое главное - выиграть в производительности?
источник

KT

Kirill Torgashin in JavaScript — русскоговорящее сообщество
Делаешь 5 массивов. forEach. В нем switch-case
источник

KT

Kirill Torgashin in JavaScript — русскоговорящее сообщество
В кейсе каждом push в нужный.
источник

NF

Nektamu Fox in JavaScript — русскоговорящее сообщество
это будет быстрее?
источник

KT

Kirill Torgashin in JavaScript — русскоговорящее сообщество
Это одна итерация.
источник

AE

Alexey Ermakov in JavaScript — русскоговорящее сообщество
один раз пробежать по массиву вместо 5 ?
источник

AE

Alexey Ermakov in JavaScript — русскоговорящее сообщество
да, чуть-чуть быстрее
источник

NF

Nektamu Fox in JavaScript — русскоговорящее сообщество
ну так то да, спасибо)
источник

AE

Alexey Ermakov in JavaScript — русскоговорящее сообщество
а вообще, если у тебя там не 94675687234598934 элементов, то пофигу как
источник

NF

Nektamu Fox in JavaScript — русскоговорящее сообщество
ну там в основном по 15 элементов
источник

E

Evgen in JavaScript — русскоговорящее сообщество
Nektamu Fox
Привет, нужно фильтрануть массив и разбить его на более маленькие массивы, сейчас реализация такая -
let videoArray = formatedSearch.filter((item) => item.document.searchable_type === 'Video')
   let sessionArray = formatedSearch.filter((item) => item.document.searchable_type === 'Session')
   let channelArray = formatedSearch.filter((item) => item.document.searchable_type === 'Channel')
   let userArray = formatedSearch.filter((item) => item.document.searchable_type === 'User')
   let recordingArray = formatedSearch.filter((item) => item.document.searchable_type === 'Recording')

Как это можно упростить и самое главное - выиграть в производительности?
reduce в в объект, поля по фильтрам, значения в виде массива
источник

AE

Alexey Ermakov in JavaScript — русскоговорящее сообщество
и какой выигрыш по производительности нужен? 5 мс ? )
источник

NF

Nektamu Fox in JavaScript — русскоговорящее сообщество
но так как это частичный функционал результатов поиска, то результатов там может быть больше (в зависимости от per_page)
источник

AE

Alexey Ermakov in JavaScript — русскоговорящее сообщество
с точки зрения алгоритма - выше предложили
с точки зрения "работает - не трогай" — нормально
источник

NF

Nektamu Fox in JavaScript — русскоговорящее сообщество
ну вот я и хочу посмотреть на этот выиграш, страница должна максимально быстро рендерить контент и хочу выиграть на всем, чем можно
источник

E

Evgen in JavaScript — русскоговорящее сообщество
Nektamu Fox
ну вот я и хочу посмотреть на этот выиграш, страница должна максимально быстро рендерить контент и хочу выиграть на всем, чем можно
Это делается после того, как уже все написано
источник

NF

Nektamu Fox in JavaScript — русскоговорящее сообщество
так уже все написано
источник

NF

Nektamu Fox in JavaScript — русскоговорящее сообщество
и все работает, но на проде оказалось что работает не так быстро как хотелось бы
источник

NF

Nektamu Fox in JavaScript — русскоговорящее сообщество
основная проблема была в другом, но я ее уже пофиксил
источник

E

Evgen in JavaScript — русскоговорящее сообщество
Nektamu Fox
так уже все написано
Но это точно не узкое место
источник