Как удалить дубликат массива свойства объекта в javascript? - PullRequest
0 голосов
/ 18 марта 2020
const words = [{value:"can_view",rolename:"group"},
{value:"can_create",rolename:"group"},

{value: "can_create", rolename: "top"}]; {value: "can_delete", rolename: "group"}];

{value:"can_delete",rolename:"top"}];

Я пытаюсь получить значение из массива объектов. Я хочу получить значение этого формата

        Accepted Value: {
         group:["can_view","can_create"],
         top:["can_delete"]
        }

А также я хочу удалить массив выходных данных на основе rolename из output..forexample, "can_create", can_delete удалить только из свойства группы. Вот мой кодовый ящик: https://codesandbox.io/s/fragrant-http-v35lf

Ответы [ 2 ]

2 голосов
/ 18 марта 2020

Вы можете сделать с Array#reduce

const words = [{value:"can_view",rolename:"group"},{value:"can_create",rolename:"group"},{value:"can_delete",rolename:"top"}];

const res =  words.reduce((acc,{rolename,value})=>{
   acc[rolename] = acc[rolename] || [];
   acc[rolename].push(value);
   return acc
},{});


console.log(res)
1 голос
/ 18 марта 2020

Используйте простое для l oop, чтобы сделать это. Вам нужно сгруппировать по rolename здесь.

Песочница: https://codesandbox.io/s/compassionate-bas-fg1c2

 const words = [
  { value: "can_view", rolename: "group" },
  { value: "can_create", rolename: "group" },
  { value: "can_delete", rolename: "top" },
  { value: "can_delete", rolename: "group" }
];

const result = {};
for (const { value, rolename } of words) {
  if (!result[rolename]) result[rolename] = [];
  result[rolename].push(value);
}

function removeElement(obj, arr) {
 for (var key of Object.keys(result)) {
    if (key === obj) {
      result[key] = result[key].filter(i => !arr.includes(i));
    }
  }
  return result;
}

const modified = removeElement("group", ["can_delete"]);
console.log(modified);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...