Size: a a a

2019 July 30

С

Славик in javascript_ru
занеси в объект по ключу guid массив ролей
источник

С

Славик in javascript_ru
а потом собери массив фором
источник

S

Stas in javascript_ru
кажется можно собрать массив уникальных значений, и потом собрать роли в них перебором, если Славик не это же предложил
источник

S

Stas in javascript_ru
ну или как вариант сразу пройтись циклом и если ключ повторяется, писать просто еще одно значение
источник

I

Ivan in javascript_ru
Igor N
Ребятки, у меня есть примерно вот такой массив. https://codepen.io/anon/pen/xvqBBr Как бы мне пробежаться по нему, проитерировать айдишники и на выходе получить что-то вроде [{guid: '35D1BCAD', role: ['Роль 1', 'Роль 2', 'Роль 3']}, { guid: '866BB6EC', role: ['Роль 1', Роль 3'] }, ...]? Ну то есть на одном айди может быть завязано несколько ролей, и мне нужно это всё собрать, такскать. Что-то я туплю сильна
arr.map(v => v.role).filter((v, i, a) => a.indexOf(v) === i)
источник

S

Stas in javascript_ru
Ivan
arr.map(v => v.role).filter((v, i, a) => a.indexOf(v) === i)
жёстко
источник

I

Ivan in javascript_ru
а сорян, не так понял
источник

I

Ivan in javascript_ru
не читал дальше ссылки
источник

I

Ivan in javascript_ru
что-то вроде того
arr
 .reduce((a, v, i, arr) => {
   if(a.filter(e => e.guid === v.guid).length === 0) {
     a.push({
     guid: v.guid,
           roles: arr.filter(e=> e.guid === v.guid).map(e => e.role)
     });
   }
   return a;
 }, [])
источник

S

Syntax Highlight Bot in javascript_ru
Ivan
что-то вроде того
arr
 .reduce((a, v, i, arr) => {
   if(a.filter(e => e.guid === v.guid).length === 0) {
     a.push({
     guid: v.guid,
           roles: arr.filter(e=> e.guid === v.guid).map(e => e.role)
     });
   }
   return a;
 }, [])
источник

IN

Igor N in javascript_ru
Ivan
что-то вроде того
arr
 .reduce((a, v, i, arr) => {
   if(a.filter(e => e.guid === v.guid).length === 0) {
     a.push({
     guid: v.guid,
           roles: arr.filter(e=> e.guid === v.guid).map(e => e.role)
     });
   }
   return a;
 }, [])
Ооо, спасибо тебе, добрый человек! 🙏🏻
источник

С

Славик in javascript_ru
let obj = {};
arr.forEach(({guid, role}) => obj[guid] ? obj[guid].push(role) : obj[guid] = [role]);
let result = Object.keys(obj).map(guid => ({guid, role: obj[guid]}))
источник

I

Ivan in javascript_ru
Славик
let obj = {};
arr.forEach(({guid, role}) => obj[guid] ? obj[guid].push(role) : obj[guid] = [role]);
let result = Object.keys(obj).map(guid => ({guid, role: obj[guid]}))
эт вроде получше
источник

С

Славик in javascript_ru
можно, кстати, сэкономить итерации
источник

С

Славик in javascript_ru
let obj = {};
let result = [];
arr.forEach(({guid, role}) => {
 if (obj[guid]) {
   obj[guid].role.push(role);
 } else {
   let item = {guid, 'role': [role]}
   obj[guid] = item;
   result.push(item);
 }
});
console.log(obj, result);
источник

S

Syntax Highlight Bot in javascript_ru
Славик
let obj = {};
let result = [];
arr.forEach(({guid, role}) => {
 if (obj[guid]) {
   obj[guid].role.push(role);
 } else {
   let item = {guid, 'role': [role]}
   obj[guid] = item;
   result.push(item);
 }
});
console.log(obj, result);
источник

I

Ivan in javascript_ru
да, в моем варианте он проходит весь массив чтоб узнать, есть ли уже с таким айдишником
источник

С

Славик in javascript_ru
O(n)
источник

IN

Igor N in javascript_ru
Спасибо пацаны
источник

S

Stas in javascript_ru
всё еще не понимаю как вариант Ивана можно считать более читабельным чем последний вариант Славика
источник