Cenator 🐈
Функция в одну стоку
че-то не догоняю
Oleg
Условно в одну
дima
new Array(len).forEach(...
дima
не?
Oleg
map тогда уж
Oleg
Собственно задача то пройтись мапом по массиву трансформируя значение в объект
Oleg
Всё
Oleg
Либы не нужны
Cenator 🐈
с объектами так же просто?
Oleg
Ибо это почти как 2 числа сложить и та шутка с плагином джейквери для сложения
Oleg
А, если повторы тогда уже чуть сложнее
Dika
const arr = [1, 6, 6]; const arr2 = []; const obj = {}; arr.forEach((el) => { if (typeof obj[el] === "number") obj[el]++; else obj[el] = 1; }); Object.keys(obj).forEach((i) => { arr2.push({ item: i, count: obj[i] }); }); console.log(arr2);
Dika
Как-то так
Oleg
Вот, с ходу вариант выше похож на правильное решение, но я не вчитывался
дima
как просто создать массив через функции? например var arr = create(5, (i) => return {item: i})
дima
есть уже готовый метод в js?
Cenator 🐈
ладно, спасибо всем
Дима
Ну и это, того
Дима
#noobs
Group Butler [beta]
#noobs
pro.js.noobs -- https://t.me/joinchat/AAAAAD3Uyr3trzb9rRc77g
дima
спасибо большое
дima
Array.from([1,6,6], (v,i) => {return {item:v, count:i+1}})
дima
есть готовая либа, которая превращает массив вида [1,6,6] во что-то вроде [ { item: 1, count: 1 }, { item: 6, count: 2 } ] ?
Dika
Array.from([1,6,6], (v,i) => {return {item:v, count:i+1}})
Это не то, не убирает повторы
дima
знаю, что уже скорее всего решили, просто самому было интересно это решить в одну строчку (arr=[1,6,6]).reduce((a,v,i)=>{if(arr.indexOf(v)==i)a.push({item:v, count:i+1});return a},[])
Oleg
👍
дima
а должно?) в тз об этом ни слова)
дima
по крайней мерее те 3 сообщения
Dika
а должно?) в тз об этом ни слова)
Нет, просто в моем решении массив обходится один раз.
дima
в моем тоже)
Cenator 🐈
Да, называется lodash
Как метод называется, не подскажешь?
Dika
@decrypth Нет. arr.indexOf тоже итерирует весь массив.
Андрей
Как метод называется, не подскажешь?
Никак, там есть базовые методы, комбинируя которыми ты сделаешь то, что надо.
Андрей
Хотя вроде как есть groupBy
Cenator 🐈
Да, вроде оно
Cenator 🐈
Спс
Дима
Да, называется lodash
Лодаш не нужен
Андрей
Лодаш не нужен
Мемчанский не нужен
Дима
Неактуально, как видишь
Андрей
А почему lodash не нужен?
дima
если не уверен, то скажи что не так
Дима
Неудобный, композицию функций с ним делать заманаешься, никакого point free тебе
Дима
Мутабельность везде
Дима
Ну и lodash-fp как странная пародия на рамду
George
В части 'count: i+1'. Какой смысл индекс увеличивать?
Дима
Это не то, не убирает повторы
const uniq = list => [...new Set(list)]
Maxim
какие есть хорошие gui для mongo?
Maxim
спасибо
Danil Á.
Intellij idea
Dika
const uniq = list => [...new Set(list)]
В данном случае это не поможет, т.к. в массиве объекты, к тому же count будет не тот. Его решение было в корне неверным.
Danil Á.
Intellij idea
Правда только с плагином
Maxim
для шторма плагин есть?
Oleg
Робомонго очень ок
Андрей
Мутабельность везде
В чём мутабельность у него? Я прост не в курсах.
Дима
У него же есть chain
Это не то вообще Плюс это сразу втащит тебе в бандл весь лодаш целиком без надежды на оптимизацию
Андрей
Хотя ладно.
Дима
Нет, суть именно в том как устроен chain
Андрей
Я всё равно использую лодаш как приятную библиотечку функций.
Дима
Не оч приятную короче
Андрей
xDD
Андрей
Ладно)
Дима
Плюс рамда имеет второе дно, позволяя организовывать мощный интероп
Андрей
интероп с чем?
Дима
С чем угодно
Андрей
Хм...
Андрей
Ок, гляну рамбду.
Андрей
Уговорил.
Дима
Функция equals будет использовать с твоими объектами твой метод .equals, если ты его заимплментил
Дима
А так как все проверки на равенство в рамде используют equals, то uniq из неё например будет сразу работать как надо
Дима
То бишь, сделал класс, сказал как в нём делать проверку на равенство — всё из коробки взлетело
Дима
Та же тема с .map, .chain и тонной других методов
Anonymous
Есть тут кто живой?