Size: a a a

JavaScript Noobs — сообщество новичков

2020 July 22

K

Kirill in JavaScript Noobs — сообщество новичков
Смысл в том, что при каждом добавлении товара в корзину вызывается функция addToCart  и через template literals генерируются товары в корзине, у них есть инпуты и вот на них при каждом клике я и вешаю дополнительный обработчик, вот и вопрос в том, как это избежать, чтобы вешался обработчик только на товар который добавился только что и всего один обработчик
источник

L

Lev Tonov in JavaScript Noobs — сообщество новичков
Kirill
Смысл в том, что при каждом добавлении товара в корзину вызывается функция addToCart  и через template literals генерируются товары в корзине, у них есть инпуты и вот на них при каждом клике я и вешаю дополнительный обработчик, вот и вопрос в том, как это избежать, чтобы вешался обработчик только на товар который добавился только что и всего один обработчик
Делигированием
источник

D

Danila in JavaScript Noobs — сообщество новичков
Kirill
Смысл в том, что при каждом добавлении товара в корзину вызывается функция addToCart  и через template literals генерируются товары в корзине, у них есть инпуты и вот на них при каждом клике я и вешаю дополнительный обработчик, вот и вопрос в том, как это избежать, чтобы вешался обработчик только на товар который добавился только что и всего один обработчик
Сгенерировал товары - вешай только на них и вставляй в ДОМ
источник

D

Danila in JavaScript Noobs — сообщество новичков
Или делегированием, в принципе, да.
источник

М

Максим in JavaScript Noobs — сообщество новичков
John Gotti
Привет всем. Столкнулся с такой проблемкой.
Есть массив обьектов след вида:
[
   {
     "color": "red",
     "memory": "256gb",
     "new-or-used": "no",
     "model": "iphone-se-2020"
   },
   {
     "color": "black",
     "memory": "256gb",
     "new-or-used": "no",
     "model": "iphone-se-2020"
   },
   {
     "color": "white",
     "memory": "256gb",
     "new-or-used": "no",
     "model": "iphone-se-2020"
   },
   {
     "color": "red",
     "memory": "128gb",
     "new-or-used": "no",
     "model": "iphone-se-2020"
   }]


Нужно сгруппировать значения обьектов по ключу обьекта и в каждый ключ записать значения в виде массива. Ожидаемый результат:

{
   "model": [
     "iphone-se-2020"
   ],
   "new-or-used": [
     "no"
   ],
   "memory": [
     "256gb",
     "128gb",
     "64gb"
   ],
   "color": [
     "red",
     "black",
     "white"
   ]
 }


На данный момент сделал не очень красиво, вообще прям не очень)

const filtersArr = products.map((p) => p.filters[0]);
   let filtersObj = {};
   const modelsArr = [...new Set(filtersArr.map(e => e.model))];
   const newOrUsedArr = [...new Set(filtersArr.map(e => e['new-or-used']))];
   const dualSimArr = [...new Set(filtersArr.map(e => e['dual-sim']))];
   const memoryArr = [...new Set(filtersArr.map(e => e['memory']))];
   const colorArr = [...new Set(filtersArr.map(e => e['color']))];
   const cellularArr = [...new Set(filtersArr.map(e => e['cellular']))];
   const diagonalArr = [...new Set(filtersArr.map(e => e['diagonal']))];
   filtersObj.model = modelsArr;
   filtersObj['new-or-used'] = newOrUsedArr;
   filtersObj['dual-sim'] = dualSimArr;
   filtersObj.memory = memoryArr;
   filtersObj.color = colorArr;
   filtersObj.cellular = cellularArr;
   filtersObj.diagonal = diagonalArr;


Ключи могут быть не такие как в этом примере

Отрабатывает так как нужно, но, при большом обьеме данных очень много ресурсов хавает и времени. Как будет выглядеть цикл чтобы за раз пройтись по всем обьектам и их ключам и вернуть ожидаемый результат?
Заранее спасибо
источник

q

qqqqqqq in JavaScript Noobs — сообщество новичков
Подскажите пожалуйста, где тут ошибка?
let arr = ['somePic.jpg', 'somePic2.jpg'];
arr.map(pic => { return <img src={pic}></img>});
источник

ГЩ

Глеб Щукин in JavaScript Noobs — сообщество новичков
qqqqqqq
Подскажите пожалуйста, где тут ошибка?
let arr = ['somePic.jpg', 'somePic2.jpg'];
arr.map(pic => { return <img src={pic}></img>});
источник

y

ymdev in JavaScript Noobs — сообщество новичков
может у него jsx
источник

ГЩ

Глеб Щукин in JavaScript Noobs — сообщество новичков
qqqqqqq
Подскажите пожалуйста, где тут ошибка?
let arr = ['somePic.jpg', 'somePic2.jpg'];
arr.map(pic => { return <img src={pic}></img>});
или это шаблонизатор какой то?
источник

ГЩ

Глеб Щукин in JavaScript Noobs — сообщество новичков
я не ванга
источник

y

ymdev in JavaScript Noobs — сообщество новичков
qqqqqqq
Подскажите пожалуйста, где тут ошибка?
let arr = ['somePic.jpg', 'somePic2.jpg'];
arr.map(pic => { return <img src={pic}></img>});
у тебя ошибка, что для тега img не нужен закрывающий тег. Нужно писать <img />
источник

q

qqqqqqq in JavaScript Noobs — сообщество новичков
Глеб Щукин
или это шаблонизатор какой то?
голова кругом, не смогу сказать
источник

q

qqqqqqq in JavaScript Noobs — сообщество новичков
спасибо за помощь всем
источник

in JavaScript Noobs — сообщество новичков
если я хочу со строкой работать как с массивом из символов мне обязательно нужно использовать функции split()  чтобы из строки в массив перевести, или можно без этого
источник

in JavaScript Noobs — сообщество новичков
просто вывести строку как массив через [i] получается без проблем
источник

in JavaScript Noobs — сообщество новичков
var str = "Hello";
var arr = str.split("");
зачет тогда вот так делать и переводить в массив
источник

D

Danila in JavaScript Noobs — сообщество новичков
просто вывести строку как массив через [i] получается без проблем
К строке можно обращаться по индексу - будешь получать символ
источник

D

Danila in JavaScript Noobs — сообщество новичков
var str = "Hello";
var arr = str.split("");
зачет тогда вот так делать и переводить в массив
Потому что у строки нет методов массива - фильтра, редюса, мапа, реверса и всего остального
источник

in JavaScript Noobs — сообщество новичков
а понял
источник

in JavaScript Noobs — сообщество новичков
спасибо
источник