javascript
568
33
Ребята, сижу делаю задачки.
Нужно посчитать кол-во элементов в массиве.Попалось вот такое решение.const arr = ["a", "a", "b", "c", "c"];const counts = {};arr.forEach((x) => {counts[x] = (counts[x] || 0) + 1;});console.log(counts);Объясните как работает вот эта строка - (counts[x] || 0) + 1;Вообще не понимаю как это условие работает
rot1t сказал(а):↑Там ассоциативный массив, где ключами являются элементы из arr, а значениями их количество. Если значение ключу ранее не было присвоено, то присваивается 1, иначе оно увеличивается на 1.
Код говна, кста. Так писать нельзя.
Нажмите, чтобы раскрыть...Ну я посмотрел несколько решений и у меня в голове было как это можно сделать. Но именно этот пример засел в голове так как не до конца понимал как это работает. Теперь всё ясно.
rot1t сказал(а):↑Зачем писать код говна? Ты экономишь одну сточку, зато пишешь супер элементарную вещь максимально сложно.
Нажмите, чтобы раскрыть...условие задачи не то что тс написал
https://stackoverflow.com/questions/19395257/how-to-count-duplicate-value-in-an-array-in-javascript
ZipZap(D2) сказал(а):↑условие задачи не то что тс написал
https://stackoverflow.com/questions/19395257/how-to-count-duplicate-value-in-an-array-in-javascript
Нажмите, чтобы раскрыть...Понятно, что не то. Я по коду понял, какое там условие.
ZipZap(D2) сказал(а):↑условие задачи не то что тс написал
https://stackoverflow.com/questions/19395257/how-to-count-duplicate-value-in-an-array-in-javascript
Нажмите, чтобы раскрыть...Не совсем, у меня есть массив из вещей допустим, мне надо их отсортировать и вывести на экран сколько вещей есть из конкретного бренда
rot1t сказал(а):↑Зачем писать код говна? Ты экономишь одну сточку, зато пишешь супер элементарную вещь максимально сложно.
Нажмите, чтобы раскрыть...наверное, тут подходит это решение, так как данная задача нужна для обучения особенностям языка, а не для реального применения, решив задачу таким образом, тс узнал про то, что объект возвращает undefined по несуществующему ключу, а также про последовательное вычисление выражений с помощью оператора ||
Ruvidota сказал(а):↑Не совсем, у меня есть массив из брендов допустим, мне надо их отсортировать и вывести на экран сколько вещей есть из конкретного бренда
Нажмите, чтобы раскрыть...Количество элементов в массиве это размер массива. Но все уже поняли, что ты имел в виду
Lancer.Rev.X сказал(а):↑наверное, тут подходит это решение, так как данная задача нужна для обучения особенностям языка, а не для реального применения, решив задачу таким образом, тс узнал про то, что объект возвращает undefined по несуществующему ключу, а также про последовательное вычисление выражений с помощью оператора ||
Нажмите, чтобы раскрыть...Согласен. Но тс ее не сам решил, а нашел готовый код на стековерфлоу
rot1t сказал(а):↑Зачем писать код говна? Ты экономишь одну сточку, зато пишешь супер элементарную вещь максимально сложно.
Нажмите, чтобы раскрыть...ну ты серьезно сейчас?
Видно, что человек в вопросе не разбирается, собсна с помощью понять что, куда и зачем - он и попросил.
Ты ему своим постом выше рассказываешь некую инфу, которую он, скоей всего не поймет.
Еще и код гавном называешь без обьяснений почему он гавно
rot1t сказал(а):↑Количество элементов в массиве это размер массива. Но все уже поняли, что ты имел в виду
Согласен. Но тс ее не сам решил, а нашел готовый код на стековерфлоу
Нажмите, чтобы раскрыть...Я же написал сверху, что я понимал как её решить по моему, я смотрю несколько решений на одну задачу, не понимаю что ты хочешь донести, реально)
Что ты лучше понимаешь в языке? я и не спорю
Ruvidota сказал(а):↑Объясните как работает вот эта строка
Нажмите, чтобы раскрыть...это классический прием в жаваскрипте, если ты его не понимаешь ну может стоит почитать книжку про основы жс.
rot1t сказал(а):↑Так писать нельзя.
Нажмите, чтобы раскрыть...конечно можно так писать и даже нужно, в контексте джаваскрипта. для примера можешь погуглить популярные библиотеки на жаваскрипте (далеко ходить не нужно jquery/init.js at main · jquery/jquery · GitHub), все это используют и не морщатся, следовательно этот прием является частью языка
более того в языках со строгой типизацией есть аналогии What is the nil coalescing operator? - free Swift 5.4 example code and tips (hackingwithswift.com)
таким образом я заявляю что ты максимум знаешь паскаль с курса школы и не можешь делать утверждения по поводу программирования
krati сказал(а):↑это классический прием в жаваскрипте, если ты его не понимаешь ну может стоит почитать книжку про основы жс.
конечно можно так писать и даже нужно, в контексте джаваскрипта. для примера можешь погуглить популярные библиотеки на жаваскрипте (далеко ходить не нужно jquery/init.js at main · jquery/jquery · GitHub), все это используют и не морщатся, следовательно этот прием является частью языка
более того в языках со строгой типизацией есть аналогии What is the nil coalescing operator? - free Swift 5.4 example code and tips (hackingwithswift.com)
таким образом я заявляю что ты максимум знаешь паскаль с курса школы и не можешь делать утверждения по поводу программирования
Нажмите, чтобы раскрыть...Боже, ты такой бред высрал, что мне даже лень объяснять тебе. Кстати, я отучился на прогера в одном из лучших вузов раисы. Удачи тебе там с изучением паскаля, ага
rot1t сказал(а):↑Зачем писать код говна? Ты экономишь одну сточку, зато пишешь супер элементарную вещь максимально сложно.
Нажмите, чтобы раскрыть...тезис хороший, только в этой ситуации это нормально, подобным образом почти везде пишут щас, ну разве что заменить || на ??, хотя тут и это и не будет иметь значения
(мимо программист 7 лет опыта)
rot1t сказал(а):↑Там ассоциативный массив, где ключами являются элементы из arr, а значениями их количество. Если значение ключу ранее не было присвоено, то присваивается 1, иначе оно увеличивается на 1.
Код говна, кста. Так писать нельзя.
Нажмите, чтобы раскрыть...эмм, почему я зная скудно джс, догадался что это подобие тернарному оператору а для тебя, видимо, джсера, это оказывается сложный код?
Ruvidota сказал(а):↑Нужно посчитать кол-во элементов в массиве.
Нажмите, чтобы раскрыть...const counts = ['a', 'a', 'b', 'b', 'c'].reduce((a, i) => (a = (a ?? 0) + 1, a), [])
console.table(counts)
Где
['a', 'a', 'b', 'b', 'c'] - начальный массив
a - формируемый массив
i - текущий элемент из начального массива
?? - нулевое слияние (если левый элемент null или undefined - возвращаем правое значение, иначе левое)
Ruvidota сказал(а):↑Объясните как работает вот эта строка - (counts[x] || 0) + 1;Вообще не понимаю как это условие работаетНажмите, чтобы раскрыть...|| - или
Просто условие. Если counts[x] не равен null или undefined, то вернёт его и прервёт условие, иначе пойдёт проверять следующий пункт (в данном случае просто вернёт 0)
rot1t сказал(а):↑Боже, ты такой бред высрал, что мне даже лень объяснять тебе. Кстати, я отучился на прогера в одном из лучших вузов раисы. Удачи тебе там с изучением паскаля, ага
Нажмите, чтобы раскрыть...- Кстати я отучился на прогера в одном из лучших вузов раисы
- Но я тебя не спраш..
- Всё, мне некогда, пока
Еси рассматривать эту задачу в браузере, то использовать оператор ??, ну и такое как ?. идея не очень хорошая и лучше обойтись ||, т.к. тут условие позволяет. А если в ноде, то можно вообще использовать Set и в него всё запихивать.
Александр сказал(а):↑|| - или
Просто условие. Если counts[x] не равен null или undefined, то вернёт его и прервёт условие, иначе пойдёт проверять следующий пункт (в данном случае просто вернёт 0)
Нажмите, чтобы раскрыть...Не совсем корректно. Если первое условие при приведении в Boolean возвращает false, то выполняется второе условие. 0 или '' - тоже false.
Тема закрыта
-
ЗаголовокОтветов ПросмотровПоследнее сообщение
-
Сообщений:0
Просмотров:0
-
Сообщений:0
Просмотров:0
-
Сообщений:4
Просмотров:4
-
Сообщений:7
Просмотров:7
-
Сообщений:3
Просмотров:3