Zian
g/javascript

Da się wsadzić znak z pozycji w tablicy w Regexie? Jakaś metoda na zliczenie wystąpień znaku z pozycji w tablicy?

let str = "onomatopoeia";
str = str.match(/o/g);
console.log(str.length); // 4

Deykun

@Zian:
Jeśli pytasz o ilość wystąpień "o" w tekście, to twoje rozwiązanie jest legitne. I nie kojarzę metody która by to robiła bezpośrednio.

Przestań tylko mutować w ten sposób zmienne. Masz let str = "onomatopoeia"; i robisz z tego tablice.

Da się wsadzić znak z pozycji w tablicy w Regexie?

Trochę nie rozumiem pytania, czy da się podmienić wiele naraz? 'onomatopoeia'.replaceAll('o', 'b');

Jak chcesz generować pattern regexa np. masz tablice litter do sprawdzenia to możesz to tak robić:
const letterToCheckPattern = 'o';
const pattern = new RegExp(letterToCheckPattern , 'g');
const matches = 'onomatopoeia'.match(pattern);

Jeszcze jest matchAll() ale nie używałem szczerze mówiąc.

kakabix
g/ModernClassical

Kupiłem sobie dżinsy z dziurami
Jestem dobre kilka lat za modą
Ale może chociaż one
Trochę mnie odmłodzą

Deykun

@kakabix:
Widzę, że kolega podąża za modom tak samo jak ja.

https://www.youtube.com/watch?v=us52N76XA28
Zawsze czuję się zaatakowany tą sceną.

Logika
g/owno

panowie
skończmy pierdolić po próżnicy
napijmy się

Deykun

"Wpis Logika" nowy film Smarzowskiego, w kinach w 2022

ajdajzler
g/bit

corva brac ten projekt ze wzorcuw projektowych czy nie ;s

Deykun

@ajdajzler:
Policz DRY i KISS jako wzorce.

ajdajzler
g/bit

corva brac ten projekt ze wzorcuw projektowych czy nie ;s

Deykun

@ajdajzler:
Jak tam napisałeś, że ma się pojawić 7 chyba to trochę meh. Wzorców się używa jak są dogodne sytuacje i jest z nich profit, bo ich implementacja generuje narzut kodu (jest go więcej żeby móc go wygodniej i przewidywalniej skalować), a wymyślanie takich sytuacji niepotrzebnie męczy głowę w drugą stronę.

Wzorce same w sobie to spoko temat.

Aleks
g/Poradniki

ósma minuta ssania fiuta

Deykun

@Aleks:
Whatever floats your boat.

kakabix
g/ListaHanby

IV Zlotoid
Lista obecności

Deykun

Ej @duxet naprawił 8 minut.

ajdajzler
g/Survival

zróbmy trzeci zlot strimoida

Deykun

@Pherun: done

Deykun
g/pieknodanych

Średnia cena za litr Pepsi Max

Średnia nie jest dla wszystkich więc jak Carrefour Express ma więcej danych to fizycznie ją pcha do góry, ceny na słupkach to co najkorzystniej się udało ugrać na litrach w sieciach i jest bardziej miarodajne.

Deykun

@Aleks:
Ja jestem przestawiony już, ale trochę starty temat i a w sumie nie widzę sensu nawracać ludzi na jedną słuszną drogę. :D

Deykun
g/pieknodanych

Średnia cena za litr Pepsi Max

Średnia nie jest dla wszystkich więc jak Carrefour Express ma więcej danych to fizycznie ją pcha do góry, ceny na słupkach to co najkorzystniej się udało ugrać na litrach w sieciach i jest bardziej miarodajne.

Deykun

@sens:
Sens jak zwykle się nie zna. BTW. też max i zero to inny temat niż cukrowe w smaku.

Deykun
g/pieknodanych

Średnia cena za litr Pepsi Max

Średnia nie jest dla wszystkich więc jak Carrefour Express ma więcej danych to fizycznie ją pcha do góry, ceny na słupkach to co najkorzystniej się udało ugrać na litrach w sieciach i jest bardziej miarodajne.

Deykun

@Aleks:
Pepsi max nie ma cukru i kalorii.

Pokaż ukrytą treśćJestem gruby, bo wpierdalam inne rzeczy. xD

Deykun
g/pieknodanych

Średnia cena za litr Pepsi Max

Średnia nie jest dla wszystkich więc jak Carrefour Express ma więcej danych to fizycznie ją pcha do góry, ceny na słupkach to co najkorzystniej się udało ugrać na litrach w sieciach i jest bardziej miarodajne.

Deykun

@Aleks:
To jest średnia cena dla mnie, jak kupiłem 99 butelek po 10zł w drogim sklepie i 1 za 3zł to jest wysoka średnia, ale dla mnie, nie mówi to nic o średniej cenie na butelki w sklepach.

Zian
g/javascript

Dlaczego wartość str jest zwracana przy n = -1?

function padIt(str, n) {
while (n--) str = (n & 1) ? (str + "*") : ("*" + str);
return str;
}

console.log(padIt("a", 5));

EDIT: Wcina wcięcia.

Deykun

@ajdajzler:
Ja mam u siebie w pracy klika wywołań z while ale też niepopularne i częściej się go robi na około przez rekurencje dla danych warunków.

Ale jak ktoś chce być super cool i do przodu to robi generator:
function* idMaker() {
let index = 0;
while(true) { yield index++; }
}

const gen = idMaker();

console.log(gen.next().value); // 0
console.log(gen.next().value); // 1
console.log(gen.next().value); // 2

Zian
g/javascript

Dlaczego wartość str jest zwracana przy n = -1?

function padIt(str, n) {
while (n--) str = (n & 1) ? (str + "*") : ("*" + str);
return str;
}

console.log(padIt("a", 5));

EDIT: Wcina wcięcia.

Deykun

@Zian:

Tu nie chodzi o operacje na bitach.

To dobrze, że o tym nie myślałem, bo tam jest & wcześniej czyli operacja bitowa. :)

Jak to ma dodawać gwiazdki przed i za to ja bym to zrobił tak bez pętli:
const avgN = Math.floor(n / 2);
const prefixLength = n % 2 === 0 ? avgN : avgN+1; // dla 5 więcej na starcie jest

str = str.padStart((prefixLength + str.length), '*');
str = str.padEnd((avgN + str.length), '*');

return str;

Nie weryfikowałem tego, ale to powinno być optymalniejsze niż każda pętla, bo while, for etc. i to pewnie będzie optymalizowane przez kompilator, ale padStart i padEnd już jest pewnie zoptymalizowane na poziomie silnika js.

Zian
g/javascript

Dlaczego wartość str jest zwracana przy n = -1?

function padIt(str, n) {
while (n--) str = (n & 1) ? (str + "*") : ("*" + str);
return str;
}

console.log(padIt("a", 5));

EDIT: Wcina wcięcia.

Deykun

Jakby co JS ma padStart, padEnd.
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/padStart

Z JS pracuję codziennie ale Ci tego nie zdebuguje: pętla while z operacją na bitach (której się nieczęsto używa w js, bo jest to jednak język wysokopoziomowy) robiąca działania z iteratorze. I dochodź co autor miał na myśli i co poszło źle. :)

Popracuj nad czytelnością kodu, bo bardziej niż o to żeby komputer cie rozumiał chodzi o to żeby ludzie którzy ten kod zobaczą albo Ty za rok wiedzieli o co chodzi i czuli się z nim komfortowo jak musisz usiąść z kubkiem herbaty i kompilować taką 1 linijkę w głowie to coś poszło nie tak. :)