4, 1, 1, 3, 4, 5];
var result = {};
for (var i = 0; i < arr.length; ++i)
{
var a = arr[i];
if (result[a] != undefined)
++result[a];
else
result[a] = 1;
}
for (var key in result)
document.write('число ' + key + ' == ' + result[key] + ' раз(а) <br>');
a это текущий элемент arr в цикле по нему
else result[a] = 1 там есть
в целом задача просто была из кодварса: найти сколько раз встречается одних и тех же элементов. Вот условие: 335 / 5 000 Результаты перевода На каждую хорошую идею ката приходится немало плохих! В этом ката вам нужно проверить предоставленный массив (x) на наличие хороших идей «хорошо» и плохих идей «плохо». Если есть одна или две хорошие идеи, верните «Опубликовать!», если их больше 2, верните «Чую серию!». Если нет хороших идей, как это часто бывает, верните «Fail!». Можете подсказать, каким способом находить одинаковые элементы и их просчитать?
у вас в вопросе код был как раз на это
блин... вообще не понимаю, как эта логика там работает....
var arr = [1, 3, 1, 4, 1, 1, 3, 4, 4, 5]; var result = {}; for (var i = 0; i < arr.length; ++i) { var a = arr[i]; if (result[a] != undefined) result[a] = result[a] + 1; else result[a] = 1; } for (var key in result) document.write('число ' + key + ' == ' + result[key] + ' раз(а) <br>'); тут в этом коде result[a] = 1 определено уже после использования. А так в целом как будто начал разбираться....
тут в ваших словах вижу, что я упускаю какой то момент, сразу скажу честно, что не понимаю всю картину в целом.
if проверили, есть ли такое поле у объекта { если есть, что-то сделали } else { раз поля нет, создадим со значением }
но тут то есть вычисление result[a] = result[a] + 1, если нет поля, а ведь пока что result[a] не определен, а то что к нему 1 добавили, в моем понимании это ничего не говорит, а уже в else да, там говорится result[a]=1
так оно не будет вычисляться, если условие в if ложно
спасибо за помощь, уже больше понятно, но не совсем, сейчас надо идти, надеюсь вы еще откликнетесь позже на мои сообщения
learn.javascript.ru
Обсуждают сегодня