Size: a a a

2020 July 17

D

Danila in pro.js
Рома Кочережченко
callback функция в данном случае задается значение по умолчанию, или объявляется анонимная ф-ия,
Объявляется анонимная функция и она задаётся значением по умолчанию )
источник

РК

Рома Кочережченко... in pro.js
Благодарю
источник

НС

Никита Сковорода... in pro.js
Lupusregina[beta]
const alp = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
const myAtob = (s, l = 0) => s
 .replace(/[\r\n\s]/g, "")
 .replace(/=/g, _ => (l++,"A"))
 .replace(/.{4}/g, s => (
   s = [...s].reduce((s, v, i) => s |= alp.indexOf(v) << (6*(3 - i)), 0),
   [16,8,0].map(i => String.fromCharCode((s >> i) & 0xFF)).join("")
 ))
 .slice(0, -l || void 0)
Но выглядит довольно компактно.
источник

L

Lupusregina[beta] in pro.js
Никита Сковорода
Но выглядит довольно компактно.
источник

НС

Никита Сковорода... in pro.js
Читерская кривая версия в три раза быстрее. Тут что-то не так.
источник

L

Lupusregina[beta] in pro.js
Никита Сковорода
Читерская кривая версия в три раза быстрее. Тут что-то не так.
а что там
источник

НС

Никита Сковорода... in pro.js
Мб за счёт индексирования, сек.
источник

L

Lupusregina[beta] in pro.js
Lupusregina[beta]
const alp = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
const myAtob = (s, l = 0) => s
 .replace(/[\r\n\s]/g, "")
 .replace(/=/g, _ => (l++,"A"))
 .replace(/.{4}/g, s => (
   s = [...s].reduce((s, v, i) => s |= alp.indexOf(v) << (6*(3 - i)), 0),
   [16,8,0].map(i => String.fromCharCode((s >> i) & 0xFF)).join("")
 ))
 .slice(0, -l || void 0)
это не будет быстрым изза регулярок и indexOf
источник

НС

Никита Сковорода... in pro.js
Не, индексирование не помогло.
источник

D

Dima in pro.js
Переслано от Dima
как в этом контексте переводяться Statement vs. expression?
источник

НС

Никита Сковорода... in pro.js
Lupusregina[beta]
это не будет быстрым изза регулярок и indexOf
Другая штука делает примерно настолько же плохие вещи.
источник

L

Lupusregina[beta] in pro.js
Никита Сковорода
Другая штука делает примерно настолько же плохие вещи.
покажи ее
источник

KB

Konstantins Bogdanov... in pro.js
Lupusregina[beta]
const alp = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
const myAtob = (s, l = 0) => s
 .replace(/[\r\n\s]/g, "")
 .replace(/=/g, _ => (l++,"A"))
 .replace(/.{4}/g, s => (
   s = [...s].reduce((s, v, i) => s |= alp.indexOf(v) << (6*(3 - i)), 0),
   [16,8,0].map(i => String.fromCharCode((s >> i) & 0xFF)).join("")
 ))
 .slice(0, -l || void 0)
этож сколоько алокаций....
источник

НС

Никита Сковорода... in pro.js
Lupusregina[beta]
покажи ее
const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
const map = Array(128)
chars.split('').forEach((c, i) => (map[c.charCodeAt(0)] = i.toString(4).padStart(3, 0)))
const otherAtob = (string, tmp = '', res = []) => {
 for (let i = 0; i < string.length; i++) {
   tmp += map[string.charCodeAt(i)] || ''
   if (tmp.length >= 4) {
     res.push(String.fromCharCode(parseInt(tmp.slice(0, 4), 4)))
     tmp = tmp.slice(4)
   }
 }
 return res.join('')
}


Смотри, какое безумие
источник

НС

Никита Сковорода... in pro.js
Но оно равно раз эдак в 10 медленнее нормальной реализации. Очевидно, почему.
источник

L

Lupusregina[beta] in pro.js
Никита Сковорода
const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'
const map = Array(128)
chars.split('').forEach((c, i) => (map[c.charCodeAt(0)] = i.toString(4).padStart(3, 0)))
const otherAtob = (string, tmp = '', res = []) => {
 for (let i = 0; i < string.length; i++) {
   tmp += map[string.charCodeAt(i)] || ''
   if (tmp.length >= 4) {
     res.push(String.fromCharCode(parseInt(tmp.slice(0, 4), 4)))
     tmp = tmp.slice(4)
   }
 }
 return res.join('')
}


Смотри, какое безумие
прикольно. я тоже думал так делать(только в 2ичную переводить)
источник

t

th.witness in pro.js
Влад Лазуткин
добрый день, есть список дел, в нем еще поддела, а в нем еще и т.д. У каждого дела есть id и parent. Допустим, я удаляю дело на верхнем уровне и тогда мне нужно удалить все его поддела, а потом поддела поддел и т.д. Как мне оптимизировать это дело. Пока что делаю вот так :
const deleteTodos = async(id) => {
 const todos = await Todo.find({parent: id})
 if(todos.length) {
   for(const todo of todos) {
     await deleteTodos(todo._id)
     await Todo.findByIdAndDelete(todo._id)
   }
 }
}
На небольших объемах работает быстро, но хотелось бы сделать по-правильному.
У тебя там плоский список тудушек? Если бы подтудушки были в тудушках, можно было бы просто удалить главную тудушку.
источник

D

Danila in pro.js
Lupusregina[beta]
const alp = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
const myAtob = (s, l = 0) => s
 .replace(/[\r\n\s]/g, "")
 .replace(/=/g, _ => (l++,"A"))
 .replace(/.{4}/g, s => (
   s = [...s].reduce((s, v, i) => s |= alp.indexOf(v) << (6*(3 - i)), 0),
   [16,8,0].map(i => String.fromCharCode((s >> i) & 0xFF)).join("")
 ))
 .slice(0, -l || void 0)
*visible confusion*
источник

ВЛ

Влад Лазуткин... in pro.js
th.witness
У тебя там плоский список тудушек? Если бы подтудушки были в тудушках, можно было бы просто удалить главную тудушку.
Массив туду в туду. Я то могу удалить главную туду и её подтудушки не будут загружаться, но они останутся в бд
источник

ВЛ

Влад Лазуткин... in pro.js
Есть вариант как сделать всего один запрос, но мне кажется,что так немного не правильно. В общем у меня на клиенте вложенный объект и по идее я могу сформировать список айдишников для удаления, но по идее клиент этим заниматься не должен, а отправлять весь объект обратно на сервак тоже так себе идея
источник