Pavel
Можно как то у куки по имени узнать его опции, domain в первую очередь?
Pavel
Похоже что нет :)
Чурка
Релизы-релизки: https://github.com/Guevara-chan/HextechEye
Dmitry
Посоветуйте пожалуйста что почитать по теме: "основные шаблоны проектирования/паттереры JS"
Dmitry
паттерны*
Anonymous
Посоветуйте пожалуйста что почитать по теме: "основные шаблоны проектирования/паттереры JS"
JS это не Java, там ООП и паттерны не играют важной роли. Куда важнее изучить практики функционального программирования
Dzhanik
https://www.ozon.ru/context/detail/id/6287517/
еще есть отличная книга из серии Head First если с такой знакомы Паттерны проектирования (Head First O'Reilly)"
Anonymous
Ну че какая книга по жс обязательна к прочтению?
Avin
исходники на гитхабе почитать лучше чужие)
Avin
больше толку будет
Dmitry
Наткнулся на эту статью касательно Шаблонов - вроде коротко, все понятно https://medium.com/@marina.kovalyova/java-script-design-patterns-569c627d25f9
Maksym
Подскажите как мне отфильтровать (взять только уникальные значения) двумерного массива, по первому столбцу? Пример: var arr = [ [ 1, ... ], [ 2, ... ], [ 2, ... ], [ 3, ... ], [ 4, ... ] ]; Должно получиться [ [ 1, ... ], [ 2, ... ], [ 3, ... ], [ 4, ... ] ];
Andrei
Использовать .map на массиве
Avin
_.uniqWith([[1,2],[1,3],[2,1]], (a,b) => a[0] !== b[0])
Avin
вот варик с лодашем
Maksym
Это сторонняя библиотека ? _.uniqWith
Maksym
_.uniqWith([[1,2],[1,3],[2,1]], (a,b) => a[0] !== b[0])
Maksym
вот варик с лодашем
Maksym
Мне бы в ES5 и без сторонних библиотек.
Avin
велосепедист чтоли?)
Maksym
типо того :)
Maksym
Самое простое решение что я придумал. Это сделать объект с ключом равным значению первого столбца и значением равным подмассиву. А после снова свести в массив. Но думаю есть что-то повеселее
Pict
https://t.me/JSlang/229498 Не забываем😬
Avin
типо того :)
держи моё говно-вело - я хз разберешься нет) let buf=[]; [[1,2],[1,3],[2,1]].filter(function onlyUnique(value, index, self) { let res = buf.indexOf(value[0]) > -1; if(!res) buf.push(value[0]) return !res })
Avin
типо того :)
вот оформил красиво) function uniqArr1(arr) { let buf = []; return arr.filter(function onlyUnique(value, index, self) { let res = buf.indexOf(value[0]) === -1; if (res) { buf.push(value[0]); } return res; }); }
Avin
@Stomaks всёж познакомтесь с lodash - жизнь будет полегче))
Maksym
@Stomaks всёж познакомтесь с lodash - жизнь будет полегче))
Моя среда работы не на клиенте а на сервере, там ES5 и нет возможности юзать подобные библиотеки
Avin
я даж на espruino юзаю lodash)
Maksym
Hу что сказать, ну что сказать ... :)
Чурка
Котаны, вопрос на миллион: FireFox можно заставить выполнять clipboard.readText без плясок с расширениями или все-таки плясать с костыликами надо ?
Anonymous
Зачем костыли? Можно же clipboardjs использовать. Правда он весит 11 кб. Зато будет поддержка даже IE 9 Если еще copy-text-to-clipboard (~200 байт в gzip) но он уже давно не меинтейниться
Nikita
https://dev.to/saigowthamr/how-to-reverse-a-string-in-javascript-3i9c
Nikita
Ну блин
Anonymous
https://dev.to/saigowthamr/how-to-reverse-a-string-in-javascript-3i9c
Все методы неправильные. Потому что, когда строка будет использовать юникод с суррогатными парами все это поломается
Чурка
Это Лиса может и так.
Чурка
Мне читать надо.
Nikita
https://dev.to/saigowthamr/how-to-reverse-a-string-in-javascript-3i9c
Посимвольная конкатенация через +, которую рекомендует автор, создаёт дофига строк и выжирает память.
Nikita
Все методы неправильные. Потому что, когда строка будет использовать юникод с суррогатными парами все это поломается
esrever (который может в юникод) от Mathias-а, кстати, тоже посимвольно конкатенирует. Непонятно, нафига.
Nikita
А, не, там это в этом году починили, но не зарелизили. Лол.
Anonymous
А, не, там это в этом году починили, но не зарелизили. Лол.
Я тут накидал тоже метод, должен быть самым быстрым: function reversed(str) { const len = str.length; const res = new Uint8Array(len); for (let i = 0; i < len; ++i) { res[len - i - 1] = str.charCodeAt(i); } return String.fromCharCode.apply(null, res); } Он быстрее обычного в 7 раз на разогретом v8
Anonymous
Его легко можно переделать так, что бы юникодовские суррогатные пары так же корректно обрабатывались
Nikita
Да, я верю, что такая штука возможно будет быстрее и может меньше жрат. Но я не тестил сам.
Anonymous
Ммм, мб. Но это тоже без Юникода, да?
Если хочешь с юникодом то вот: function reversed3(str) { return Array.from(str).reverse().join(''); } Не такой быстрый но обрабатывает юникод: console.log(reversed('foo 𝌆 bar')) // => rab 𝌆 oof
Anonymous
как видишь esrever абсолютно не нужен =)
Nikita
М, я упустил, что так вообще можно.
Nikita
Но тогда ты тоже не совсем прав был.
Anonymous
Второй метод у них делает ровно то же касательно разбития строки.
Нет! Они не используют Array.from а это принципиальное отличие
Nikita
как видишь esrever абсолютно не нужен =)
И нет, esrever умнее. Открой его тесты и прогони через свой метод.
Anonymous
Строку в студию.
Ты про https://dev.to/saigowthamr/how-to-reverse-a-string-in-javascript-3i9c#second-way верно? Где там у них Array.from ?
Nikita
Там spread
Anonymous
да, верно
Nikita
А esrever выдаёт anañam, и это у него в тестах есть.
Anonymous
Короче финальная версия: const symbols = /([\0-\u02FF\u0370-\u1DBF\u1E00-\u20CF\u2100-\uD7FF\uDC00-\uFE1F\uFE30-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF])([\u0300-\u036F\u1DC0-\u1DFF\u20D0-\u20FF\uFE20-\uFE2F]+)/g; const surrogates = /([\uD800-\uDBFF])([\uDC00-\uDFFF])/g; const fromCharCode = String.fromCharCode; function reverse(str) { str = str .replace(symbols, ($0, $1, $2) => reverse($2) + $1) .replace(surrogates, '$2$1'); const len = str.length; const res = new Uint16Array(len); for (let i = 0; i < len; ++i) { res[len - i - 1] = str.charCodeAt(i); } let chunk = 2048, i = 0, output = ''; while (i < len) { output += fromCharCode.apply(String, res.subarray(i, i + chunk)); i += chunk; } return output; }
Anonymous
reverse('mañana') // anañam reverse('foo 𝌆 bar') // rab 𝌆 oof
Anonymous
На остальных не пробовал, но должно работать
Nikita
> new Array(len); Это не убивает оптимизацию, кстати?
Anonymous
Нет. Скорее даже ускоряет)
Anonymous
по крайней мере на ASCII символах
Anonymous
На моем бенче это быстрее в 10-12 раз чем наивный и не учитывающий unicode способ
Anonymous
Сделал gist с бенчем и результатами: https://gist.github.com/MaxGraey/3630c0b7ee0ec45411fd1cf0f398696a
Anonymous
опять моё фото скинули
Anonymous
для мужика, да? ахаха
Anonymous
Я не красавец, я просто себя стираю лаской
Nikita
Меня смущает последовательный запуск в одном процессе, позже гляну.
Nikita
А ещё второй и третий скан не обязателен, можно за один проход сделать.