Size: a a a

JavaScript Noobs — сообщество новичков

2021 July 28

АК

Алексей Коршунов... in JavaScript Noobs — сообщество новичков
Кнопка
источник

ДС

Денис Сафронов... in JavaScript Noobs — сообщество новичков
И переменных тоже будет оч много
источник

BB

Bogdan Bida in JavaScript Noobs — сообщество новичков
В массив сохрани все и проходи по нему мапом применяя реплейс
источник

ДС

Денис Сафронов... in JavaScript Noobs — сообщество новичков
Что именно в массив?
источник

Ф

Фулсирамович.... in JavaScript Noobs — сообщество новичков
> decodeURIComponent('%21%22%23%24%25')
'!"#$%'
источник

И

Ильназ in JavaScript Noobs — сообщество новичков
как можно пройтись в цикле по свойствам объекта и менять их значение?
источник

D

Danila in JavaScript Noobs — сообщество новичков
for of / for in
источник

D

Danila in JavaScript Noobs — сообщество новичков
А зачем ты делаешь это руками? Для этого же есть https://developer.mozilla.org/ru/docs/Web/JavaScript/Reference/Global_Objects/decodeURIComponent
источник

D

Danila in JavaScript Noobs — сообщество новичков
+
источник

ДС

Денис Сафронов... in JavaScript Noobs — сообщество новичков
Практикуюсь
источник

ДС

Денис Сафронов... in JavaScript Noobs — сообщество новичков
Зачем мне готовые решения?
источник

ДС

Денис Сафронов... in JavaScript Noobs — сообщество новичков
Если я учуст
источник

D

Danila in JavaScript Noobs — сообщество новичков
Потому что оно есть в языке специально для этой задачи?
источник

D

Danila in JavaScript Noobs — сообщество новичков
Массивы тоже не используешь?
источник

D

Danila in JavaScript Noobs — сообщество новичков
Массив это готовое решение, напиши свой на объектах
источник

D

Danila in JavaScript Noobs — сообщество новичков
В целом вот функция реализующая спеку, если тебе хочется руками это делать
function Decode(string, reservedSet) {
   const strLen = string.length;
   let result = "";
   for (let k = 0; k < strLen; k++) {
       let chr = string[k];
       let str = chr;
       if (chr === '%') {
           const start = k;
           let byte = +`0x${string.slice(k+1, k+3)}`;
           if (Number.isNaN(byte) || k + 2 >= strLen) throw new URIError;
           k += 2;
           if (byte < 0x80) {
               chr = String.fromCharCode(byte);
               str = reservedSet.includes(chr) ? string.slice(start, k + 1) : chr;
           } else { // the most significant bit in byte is 1
               let n = Math.clz32(byte ^ 0xFF) - 24; // Position of first right-most 10 in binary
               if (n < 2 || n > 4) throw new URIError;
               let value = byte & (0x3F >> n);
               if (k + (3 * (n - 1)) >= strLen) throw new URIError;
               for (let j = 1; j < n; j++) {
                   if (string[++k] !== '%') throw new URIError;
                   let byte = +`0x${string.slice(k+1, k+3)}`;
                   if (Number.isNaN(byte) || ((byte & 0xC0) != 0x80)) throw new URIError;
                   k += 2;
                   value = (value<<6) + (byte & 0x3F);
               }
               if (value >= 0xD800 && value < 0xE000 || value >= 0x110000) throw new URIError;
               if (value < 0x10000) {
                   chr = String.fromCharCode(value);
                   str = reservedSet.includes(chr) ? string.slice(start, k + 1) : chr;
               } else { // value is ≥ 0x10000
                   const low = ((value - 0x10000) & 0x3FF) + 0xDC00;
                   const high = (((value - 0x10000) >> 10) & 0x3FF) + 0xD800;
                   str = String.fromCharCode(high) + String.fromCharCode(low);
               }
           }
       }
       result += str;
   }
   return result;
}
источник

j

jabascripter in JavaScript Noobs — сообщество новичков
а зачем ты сохраняешь в переменную a,b,c,d
источник

ДС

Денис Сафронов... in JavaScript Noobs — сообщество новичков
Просто
источник

ДС

Денис Сафронов... in JavaScript Noobs — сообщество новичков
Как знаю так и делаю
источник

ДС

Денис Сафронов... in JavaScript Noobs — сообщество новичков
Из-за этого и спрашиваю
источник