Не пойму почему условие в цикле записано подобным образом?
let num = 11223334444412;
function findLuckyNum(num) {
num = [...String(num)];
let res = {};
for (let i = 0; i < num.length; i++) {
if (res[num[i]]) { res[num[i]]++;
} else { res[num[i]]=1;
}
}
let result = 0;
for (let key in res) {
if (res[key] == key) {
result = Math.max(result, key)
}
}
return res;
};
console.log(findLuckyNum(num))
Я новичек в js и хочу понять, почему условие и тело в цикле записано именно так, не никакого присвоения переменных типа:
let res = {num}
для дальшейшего обращения как:
if (res[num[i]])
подскажите как это понять(осознать)?
хочеться понять как подобные задачи решать, но уже пару суток думаю над кодом что уже мозг кипит, никак не сходится в кучку понимания этого.
Вставил бы let res = {num} и посмотрел результат в консоли. В примере создается объект с ключами имена которых составляют значения элементов массива, а в твоем случае получится объект со свойством num равный массиву num.
Ознакомьтесь с правилами сервиса https://qna.habr.com/help/rules, в частности раздел про задание вопросов, а именно: оборачивать код в тэг code. В редакторе есть специальная кнопка для этого (предпоследняя).
Согласитесь, так намного читаблельнее
const num = 11223334444412
function findLuckyNum(num) {
num = [...String(num)]
const res = {}
for (let i = 0; i < num.length; i++) {
if (res[num[i]]) {
res[num[i]]++
} else {
res[num[i]] = 1
}
}
let result = 0
for (const key in res) {
if (res[key] == key) {
result = Math.max(result, key)
}
}
return res
};
console.log(findLuckyNum(num))