Pavel
Можно как то у куки по имени узнать его опции, domain в первую очередь?
Pavel
Похоже что нет :)
Чурка
Релизы-релизки: https://github.com/Guevara-chan/HextechEye
Dmitry
Посоветуйте пожалуйста что почитать по теме: "основные шаблоны проектирования/паттереры JS"
Dmitry
паттерны*
pa[aad
Dzhanik
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
Подскажите как мне отфильтровать (взять только уникальные значения) двумерного массива, по первому столбцу?
Пример:
var arr = [
[ 1, ... ],
[ 2, ... ],
[ 2, ... ],
[ 3, ... ],
[ 4, ... ]
];
Должно получиться
[
[ 1, ... ],
[ 2, ... ],
[ 3, ... ],
[ 4, ... ]
];
заюзай _.uniqWith лодашевский
Maksym
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;
});
}
Maksym
Avin
@Stomaks всёж познакомтесь с lodash - жизнь будет полегче))
Artem
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
Ну блин
Nikita
Чурка
Чурка
Это Лиса может и так.
Чурка
Мне читать надо.
Nikita
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
Nikita
Nikita
Да, я верю, что такая штука возможно будет быстрее и может меньше жрат.
Но я не тестил сам.
Anonymous
Ммм, мб. Но это тоже без Юникода, да?
Если хочешь с юникодом то вот:
function reversed3(str) {
return Array.from(str).reverse().join('');
}
Не такой быстрый но обрабатывает юникод:
console.log(reversed('foo 𝌆 bar')) // => rab 𝌆 oof
Anonymous
как видишь esrever абсолютно не нужен =)
Nikita
М, я упустил, что так вообще можно.
Nikita
Но тогда ты тоже не совсем прав был.
Nikita
Anonymous
Nikita
Anonymous
Строку в студию.
Ты про https://dev.to/saigowthamr/how-to-reverse-a-string-in-javascript-3i9c#second-way
верно? Где там у них Array.from ?
Nikita
Там spread
Anonymous
да, верно
Nikita
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
Меня смущает последовательный запуск в одном процессе, позже гляну.
Nikita
А ещё второй и третий скан не обязателен, можно за один проход сделать.