Егор
ну если б на ревью такое попало то result и аккумулятор не должны быть одинаковые переменные. Вот это вот обычный редьюс в магию превращает reduce((o,_,O) => (o[O] = [], o), {}))
Ну я спецом тут использовал стрелочную функцию и оператор "запятая". Так просто код прикольнее выглядит - можно поржать. Если развернуть стрелочную функцию в обычную - всё будет читаемее.
D
нет не работает \n((
Sergei
Ну я спецом тут использовал стрелочную функцию и оператор "запятая". Так просто код прикольнее выглядит - можно поржать. Если развернуть стрелочную функцию в обычную - всё будет читаемее.
решение красивое и стрелочные тут в тему, я просто о acc, currentValue index или idx не просто так юзаются. reduce((o,_,O) => (o[O] = [], o), {})) я начал думать что это вообще Underscore. почему индекс O а аккум o Пришлось голову ломать что происходит.
Егор
нет не работает \n((
Дак тыж просто "\n" указываешь наверное, вместо "\\n". А вообще, если у тебя HTML, то просто вставь <br />
D
Ух ты щач попробую
D
так тоже не хочет
D
br не работает тоже
D
оно как текстовый узел его принимает, а не как тег
D
шаблоннве строки
что за шаблоновые строки?
Егор
так тоже не хочет
А что ты код показываешь, а не страницу после рендера?
Егор
У тебя у компонента должна быть поддержка html или спец-символов. Сейчас у тебя компонент экранирует текст перед выводом его в HTML.
D
Так и как мое это сделать?
Егор
Так и как мое это сделать?
Открываешь код компонента и вносишь туда необходимые изменения - всё просто.
D
Так вся проблема то в этом
D
Что я так не могу
D
У мены массив из объектов
Егор
Руки устали вбивать тест на клавиатуре?
Егор
- (никто ничего не видел). Ща напишу
Dmitry
Ребят, смотрел 73 выпуск. Как Димыч обновляет реакт из за того, что у него this undefined. А у меня вообще ничего не всплывает. Консолить задолбался. Я туплю или это известная проблема?
Егор
Так и как мое это сделать?
splitTextByN(text) { const items = text.split('\n'); const content = []; for(let i = 0, len = items.length ; i < len ; i++) { content.push(items[i]); if (i + 1 !== len) { content.push(<br />); } } return content; } render() { const {items} = this.state; return (<div>{items.map(item => { const {src = '', head = '', description = '', id = src + head} = item; return (<div key={id}> <div className="head">{this.splitTextByN(head)}</div> <img src={src} /> <div className="description">{this.splitTextByN(description)}</div> </div>); })}</div>); } Используй '\n' в строках для указания места, где нужно сделать перенос строки.
Егор
@JIEXA_MOPOXA Или ты можешь просто воспользоваться https://reactjs.org/docs/dom-elements.html#dangerouslysetinnerhtml (очень плохо использовать такие функции)
D
капец
D
столько траблов из-за переноса на новую строку)
Daniil
столько траблов из-за переноса на новую строку)
так не подходит? что вообще нужно сделать?
D
ребята
D
все было гораздо проще))
D
щас кину скрин
D
и все перенеслось))
Егор
Всегда есть несколько способов решить задачу. В общем, я тут сделал Fiddle, если интересно моё решение https://jsfiddle.net/xs7a5hgo/
D
щас гляну
D
спасибо
Daniil
const users = [ {name: 'Anzor', date: new Date("1995-01-09T22:00:00Z")}, {name: 'Ashot', date: new Date("1995-09-01T22:00:00Z")}, ]; const result = users.reduce((result, user) => { result[user.date.getMonth()].push(user); return result; }, new Array(12).fill(0).reduce((o,_,O) => (o[O] = [], o), {}));
тогда вот так можно еще: const users = [ {name: 'Anzor', date: new Date("1995-01-09T22:00:00Z")}, {name: 'Ashot', date: new Date("1995-09-01T22:00:00Z")}, ]; const result = {...Array.from(Array(12),( _ , index) => []) } users.forEach(e => result[e.date.getMonth()+1].push(e)) но у меня возник вопрос почему консоль time не верно замеряет время (первый всегда долше в не зависимости от алгоритма - можно их поменять местами поставить second вперед) const users = [ {name: 'Anzor', date: new Date("1995-01-09T22:00:00Z")}, {name: 'Ashot', date: new Date("1995-09-01T22:00:00Z")}, ]; console.time('first'); const result = users.reduce((result, user) => { result[user.date.getMonth()].push(user); return result; }, new Array(12).fill(0).reduce((o,_,O) => (o[O] = [], o), {})); console.timeEnd('first'); console.time('second'); const result1 = {...Array.from(Array(12),( _ , index) => []) } users.forEach(e => result1[e.date.getMonth()].push(e) ) console.timeEnd('second'); console.log(result)
Егор
тогда вот так можно еще: const users = [ {name: 'Anzor', date: new Date("1995-01-09T22:00:00Z")}, {name: 'Ashot', date: new Date("1995-09-01T22:00:00Z")}, ]; const result = {...Array.from(Array(12),( _ , index) => []) } users.forEach(e => result[e.date.getMonth()+1].push(e)) но у меня возник вопрос почему консоль time не верно замеряет время (первый всегда долше в не зависимости от алгоритма - можно их поменять местами поставить second вперед) const users = [ {name: 'Anzor', date: new Date("1995-01-09T22:00:00Z")}, {name: 'Ashot', date: new Date("1995-09-01T22:00:00Z")}, ]; console.time('first'); const result = users.reduce((result, user) => { result[user.date.getMonth()].push(user); return result; }, new Array(12).fill(0).reduce((o,_,O) => (o[O] = [], o), {})); console.timeEnd('first'); console.time('second'); const result1 = {...Array.from(Array(12),( _ , index) => []) } users.forEach(e => result1[e.date.getMonth()].push(e) ) console.timeEnd('second'); console.log(result)
"тогда вот так можно еще:" Ну если это проще, то я балерина. Неявное преобразование массива в объект и Array.from от массива. А ещё ошибка в users.forEach(e => result[e.date.getMonth()+1].push(e))
Daniil
ну вопрос про time)
Егор
Нет никакого смысла считать время одного выполнения операции. Ты всегда будет получать неверный результат. Оберни операции в for(let i = 0 ; i < 10000 ; i++){}
Daniil
Daniil
да теперь видно, мой работает медленнее почти в 4 раза😱
Al
Al
Al
Al
такая вот ошибка вылезла
Al
может кто сталкивался?
Al
дебагер не работает при этой ошибке и что там приходит в компоненту через пропс глянуть не могу
Kalebra
чуваки у кого вебшторм полетел? смогли решить проблему?
Daniil
первый же стейт идет потом экшен
Daniil
а у тебя тут наоборот
Al
последовательность аргументов разве значение играет?
Daniil
конечно
Егор
последовательность аргументов разве значение играет?
Что? o_O. Может быть тебе сначала "Основы программирования" изучить, прежде React?
Al
окей
Daniil
кто нибудь с яндекс картами тут работал?
Al
и где это в основах по js говорится?
Daniil
прям хиросима)
Sergei
и где это в основах по js говорится?
Порядок аргументов функции.
Sergei
Кстати на его месте я б советывал хотя бы code basics от хекслета пройти
Daniil
ну насколько я помню Димыч не говорил про то что нужно забить на основы)
Sergei
Просто мне кажется невозможно не зная алфавита начать писать.
Semyon
Всем привет А что за димыч? Это про курс этого чувака говорите?
Al
окей
Al
загуглил
Sergei
Я согласен с ним что баблинг, хойстинг, и всякие другие фичи не стоит учить в самом начале
Daniil
когда ж их учить когда мидлом станешь?
Sergei
когда ж их учить когда мидлом станешь?
Если возьмут на работу без них, то да
Daniil
все эти баблинги хойстинги нужны в первую очередь чтобы понимать почему что-то не работает
Al
разницы никакой между function(a, b) и function(b, a)
Al
главное чтобы при вызове нужные параметры туда пришли
Daniil
"проблема" всех языков программирования что они работают не так как мы думаем)))
Al
в аргументы
Егор
Я согласен с ним что баблинг, хойстинг, и всякие другие фичи не стоит учить в самом начале
Баблинг - это ты про EventTarget? При программировании на React он тебе не понадобится (наверное, но это не точно)
Sergei
разницы никакой между function(a, b) и function(b, a)
Конечно, главное что ты внутри делаешь
Al
ну
Daniil
разницы никакой между function(a, b) и function(b, a)
разница в том что не ты это вызываешь а реакт и он дает параметры в определенном порядке
Al
так про это и говорил