Двач, помоги решить задачу с жабкаскриптом:Есть 2 массива:const values1 = ['cat', 'dog'];const values2 = [];И объект с даннымиconst data = { zoo: [ {type: 'fish', content: ['tuna', 'dolphin']}, {type: 'cat', content: ['manx', 'ocicat']}, {type: 'dog', content: ['pug', 'husky', 'greyhound']}, ]}Нужно, чтобы в итоге в values2 было ['manx', 'ocicat', 'pug', 'husky', 'greyhound']Ссылка на кодпен: https://codepen.io/anon2k192ch/pen/qBWQpLK?editors=0010
>>204097492Я тебя на ревью обоссу, если ты принесешь перезапись переменной вместо добавления в массив.
>>204097492Пиздец, долбаеб не знаешь что в жс можно пушить в массив, который объявлен как константа. Ебать ты охуеешь с того, что еще с ним можно делать.Да и вообще, щас уже чуть ли не моветон использовать не-константы, лол. У меня let в коде мелькает настолько редко, что считай и нету
>>204098568ему конкретно надо было сделать значения obj2, именами свойств obj1просто перебрав первый объект и перезаписав на нужные>>204098589хз, опу зачем то надо было
>>204098662>антипаттернБлядь, щас чуть ли не любая хуйня простая и легкочитаемая считается антипаттерном. Ну-ка блядь поясни-ка схуяли собирать из двух объектов третий это антипаттерн?
>>204098719Не плоди сущностей, сука.Заебешься потом понимать, что куда передается. Я сейчас перепиливаю говнолегаси с ванилы на реакт и я ебал там разбираться в этих сеттерах, геттерах, классовом наследии и прочем костыльном говне мамонта.
>>204098721Проснись, ты серишь. Ты в папку node_modules давно заглядывал? Даже простой креейт реакт апп делает ее больше, чем жопа твоей мамаши. Смешно читать эту хуйню про ОпТеМеЗаЦиЕю, когда для простого одностраничника тянется дохуя миллионов библиотек просто потому что. >>204098901>Заебешься потом понимать, что куда передаетсяПиздец, тебя не учили что одна функция - одно действие? Если ты из функции возвращаешь ее результат, ваще поебать че там под капотом у нее. Хоть 50 деклараций. Хоть хуи там переменными рисуй. Пока ретерн возвращает правильное значение, ты не запутаешься.
>>204098984> когда для простого одностраничника тянется дохуя миллионов библиотек просто потому что.Ебать даун не понимает, что это вспомогательные либы, которые не попадают в билду. Вот умора!
>>204098984То, что кто-то там насрал зависимостями, не даёт тебе никакого права и дальше херить производительность. Ты сначала свою жопу помой, потом на чужую пальцем показывай.
>>204099223>что это вспомогательные либы, которые не попадают в билдуПрямо сейчас берешь и пилить простой PoC сервер на экспрессе и билдишь его без вебпака. Билд уносишь подальше от папке с модулями и запускаешь. Расскажешь о результатах. Джуны уже в край пизданулись и думают, что вебпак не перепаковывает либы в один бандл с их говнокодом
data.zoo.forEach(item => { if (item.type == 'cat' || item.type == 'dog') { item.content.forEach(content => { values2.push(content) }) }})console.log(values2)
>>204096762 (OP)data.zoo.filter(animal => ~values1.indexOf(animal.type)).map(v => v.content).flat().forEach(val => values2.push(val))
>>204099242>не даёт тебе никакого права и дальше херить производительность>декларация лишней пары переменных ради легкочитаемости и поддерживаемости кода>аряяяяяяя нипанимаю че куда передается, че за монструозные конструкции тутТы бы это, дальше своего говновузика бы сходил бы в реальные условия. Простой разработки стоит дороже чем бугурт пары нищуков с древним железом.
>>204098984>Пиздец, тебя не учили что одна функция - одно действие? Если ты из функции возвращаешь ее результат, ваще поебать че там под капотом у нее. Хоть 50 деклараций. Хоть хуи там переменными рисуй. Пока ретерн возвращает правильное значение, ты не запутаешься.Ты прав композиционно, однако, бывают кейсы, когда надо сохранять object-pool, чтобы не дергать лишний раз сборщик мусора, тогда такие функции использовать не получится.
>>204096762 (OP)Зачем ты спрашиваешь решения задач уровня 2+2 на двачах? Если не можешь это решить, то дропнись из этого вуза нафиг, с программированием тебе не по пути.
Перепись долблебов итт, у которых поиск по нескольким элементам оптимизацию требует.Преждевременная оптимизация - залог хуевого развития кода.
>>204099572ThisХоть один адекват в треде. Пиздец как мы в тиме заебались с этими "дипломниками"-джунами бодаться. То, что делается одной строкой они делают блядь функцией на 20, зато правельно
>>204096762 (OP)values2.push( ...data.zoo.filter(it => values1.includes(it.type)) .reduce((a, it) => [...a, ...it.content], []));
>>204096762 (OP)values2.push(...values1.flatMap(v => (data.zoo.find(z => z.type === v) || {}).content || []));
>>204100217Бинарная операция инвертирует все биты.Про поиске у тебя есть три варианта: -1, 0, >0. Соответственно, к булевой оно приведется как true, false, true, что неправильно.Бинарно числа выглядят как 1..1, 0..0, 0..1, применяя инверсию получаем 0..0, 1..1, 1..0. Теперь приведение к булевой будет правильно false, true, true.
>>204097459Ты забыл условие find'a > const values2 = values1.map(v => data.zoo.find(z => z.type === v).content).flat();Вот так надо.
>>204100722Заебись, но скорей всего я опять забуду, так как не приходится часто приводить массивы к плоскому виду и flatmap выглядит излишней оберткой над map+flat. А стоило бы запомнить, чтоб как еблан не искать подобное в lodash. Спасибо.
ОП репортинг ин:всем спасибо, самое изящное на мой взгляд решение было у >>204099363но линтер ругался, поэтому пришлось заменить побитовое отрицание на сравнение с -1А также рабочие варианты >>204097617>>204100396 вы няшки