Size: a a a

JavaScript — русскоговорящее сообщество

2020 July 21

A_

AluV ___ in JavaScript — русскоговорящее сообщество
Но скорее всего ты неправильно делаешь startTime, endTime
источник
2020 July 22

AK

Andy K in JavaScript — русскоговорящее сообщество
Переслано от Andy K
Чи скільки там їхати тобі
источник

Д

Дима in JavaScript — русскоговорящее сообщество
Всем привет. Есть прогеры, которые работали с amcharts? Нужно создать такой donut chart, но что-то дальше демо не могу сдвинуться, читаю документацию и вообще не выкупаю. Можете в ЛС отписать, чтобы я позадавал пару вопросов?
источник

d

dsgnrvd in JavaScript — русскоговорящее сообщество
Так спрашивай сюда
источник

OR

Oleg Rizhkov in JavaScript — русскоговорящее сообщество
Дима
Всем привет. Есть прогеры, которые работали с amcharts? Нужно создать такой donut chart, но что-то дальше демо не могу сдвинуться, читаю документацию и вообще не выкупаю. Можете в ЛС отписать, чтобы я позадавал пару вопросов?
Вот зачем в ЛС? Хочешь, чтоб никто кроме тебя этого не узнал?
источник

OR

Oleg Rizhkov in JavaScript — русскоговорящее сообщество
Это те же люди, которые пишут вопрос, а потом "я решил, забейте". Решил - помоги будущим челикам, которые наткнулся на твой вопрос.
источник

W

Web-Разработчик... in JavaScript — русскоговорящее сообщество
источник

W

Web-Разработчик... in JavaScript — русскоговорящее сообщество
Надеюсь в тему)
источник

NR

Nikolai Reguliarniy in JavaScript — русскоговорящее сообщество
ответов на любой вопрос с такими либами как правило 2:
- вот же есть апи, в доке все описано
- это нельзя сделать на этой либе

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

M

Mediator in JavaScript — русскоговорящее сообщество
Oleg Rizhkov
Это те же люди, которые пишут вопрос, а потом "я решил, забейте". Решил - помоги будущим челикам, которые наткнулся на твой вопрос.
Челики из будущего памятник поставят.
источник

a

arts in JavaScript — русскоговорящее сообщество
Mediator
Челики из будущего памятник поставят.
Челики из будущего ворвутся в чат с просьбой написать им в личку вместо того, чтобы воспользоваться поиском :-)
источник

S

Special K in JavaScript — русскоговорящее сообщество
arts
Челики из будущего ворвутся в чат с просьбой написать им в личку вместо того, чтобы воспользоваться поиском :-)
+
источник

JG

John Gotti in JavaScript — русскоговорящее сообщество
Привет всем. Столкнулся с такой проблемкой.
Есть массив обьектов след вида:
[
   {
     "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;


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

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

АБ

Артём Бондаренко... in JavaScript — русскоговорящее сообщество
Ну я бы сделал ручками в Фриче. Что-то типо:
let result = {};
arr.forEach(item => {
Object.keys(item).forEach(key => {
 if(!result[key]) {
   result[key]=[item[key]];
   return;
 }
 if(result[key].includes(item[key])) return;
result[key].push(item[key])
})
})
источник

АБ

Артём Бондаренко... in JavaScript — русскоговорящее сообщество
Потестить сейчас возможности нет, мог где-то опечататся,  но смысл думаю понятен)
источник

АБ

Артём Бондаренко... in JavaScript — русскоговорящее сообщество
Единственное что ключи ещё можно брать до входа в Фриче, но только с условием уверенности в том что структура объекта всегда будет одинаковой
источник

JG

John Gotti in JavaScript — русскоговорящее сообщество
Артём Бондаренко
Потестить сейчас возможности нет, мог где-то опечататся,  но смысл думаю понятен)
спасибо тебе большое) завелось с первого раза) был близок к твоему варианту, но чуть намудрил уже в обходе ключей))
источник

АБ

Артём Бондаренко... in JavaScript — русскоговорящее сообщество
Пожалуйста)
источник

D

Danila in JavaScript — русскоговорящее сообщество
John Gotti
спасибо тебе большое) завелось с первого раза) был близок к твоему варианту, но чуть намудрил уже в обходе ключей))
Как вариант



const getParameters = (phones, keys) => {
 const parameters = {};
 phones.forEach(phone => {
   keys.forEach(key => {
     const value = phone[key];
     if(!parameters[key]) parameters[key] = [];
     if(!parameters[key].includes(value)) parameters[key].push(value);
   })
 })
 return parameters;
}

console.log(getParameters(phones, ['color', 'new-or-used', 'model', 'color']));
источник

JG

John Gotti in JavaScript — русскоговорящее сообщество
Danila
Как вариант



const getParameters = (phones, keys) => {
 const parameters = {};
 phones.forEach(phone => {
   keys.forEach(key => {
     const value = phone[key];
     if(!parameters[key]) parameters[key] = [];
     if(!parameters[key].includes(value)) parameters[key].push(value);
   })
 })
 return parameters;
}

console.log(getParameters(phones, ['color', 'new-or-used', 'model', 'color']));
момент, попробую затестить как отработает
источник