-
Notifications
You must be signed in to change notification settings - Fork 30
Expand file tree
/
Copy pathmain.js
More file actions
25 lines (20 loc) · 1.45 KB
/
main.js
File metadata and controls
25 lines (20 loc) · 1.45 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
function duplicateEncode(word) {
// const не изменяемая переменная, let изменяемая переменная
const charCount = {};
// toLowerCase() возвращает значение строки, преобразованное в нижний регистр
word = word.toLowerCase()
// Оператор for...of выполняет цикл обхода итерируемых объектов (включая Array, Map, Set, объект аргументов и подобных),
// вызывая на каждом шаге итерации операторы для каждого значения из различных свойств объекта.
for (const i of word) {
charCount[i] = (charCount[i] || 0) + 1
}
// Метод split() разбивает строку на массив
return word.split('').map(i => { // "=>" стрелочная функция, представляет собой более короткую форму функции
return charCount[i] === 1 ? '(' : ')'
}).join(''); // Метод join() объединяет все элементы массива (или массивоподобного объекта) в строку
}
// Тесты
console.log(duplicateEncode("din") == "(((");
console.log(duplicateEncode("recede") == "()()()");
console.log(duplicateEncode("Success") == ")())())");
console.log(duplicateEncode("(( @") == "))((");