Как я могу преобразовать пары массив значений ключей в объект со значениями первого массива в качестве ключей? - PullRequest
0 голосов
/ 19 ноября 2018

Мой сервер возвращает данные, как показано ниже.

   var permissions = [{"PermCode":"BOF","IsvalidPerm":true},{"PermCode":"CM","IsvalidPerm":false},{"PermCode":"CV","IsvalidPerm":true},{"PermCode":"DAS","IsvalidPerm":true},{"PermCode":"RPT","IsvalidPerm":true},{"PermCode":"VM","IsvalidPerm":true}]

Как я могу преобразовать это в Objectof Object, как показано ниже

{BOF:true,CM:true, ...}

Заранее спасибо.

Ответы [ 3 ]

0 голосов
/ 19 ноября 2018

Хотя вы можете найти ответ в документации Array (заявление об отказе: это map), синтаксис немного сложен для однострочника.

Вот, пожалуйста:

const data = [
  {"PermCode":"BOF","IsvalidPerm":true},
  {"PermCode":"CM","IsvalidPerm":false},
  {"PermCode":"CV","IsvalidPerm":true},
  {"PermCode":"DAS","IsvalidPerm":true},
  {"PermCode":"RPT","IsvalidPerm":true},
  {"PermCode":"VM","IsvalidPerm":true}
];

const formatted = data.map(item => ({[item.PermCode]: item.IsvalidPerm}));

console.log(formatted);

Что касается вашего редактирования, если вы хотите создать объект, используйте reduce вместо:

const data = [
  {"PermCode":"BOF","IsvalidPerm":true},
  {"PermCode":"CM","IsvalidPerm":false},
  {"PermCode":"CV","IsvalidPerm":true},
  {"PermCode":"DAS","IsvalidPerm":true},
  {"PermCode":"RPT","IsvalidPerm":true},
  {"PermCode":"VM","IsvalidPerm":true}
];

const formatted = data.reduce((acc, curr) => ({ ...acc, [curr.PermCode]: curr.IsvalidPerm }), {});

console.log(formatted);
0 голосов
/ 19 ноября 2018

Пожалуйста, всегда показывайте свою попытку в OP, чтобы мы знали, в каком направлении вы двигались ..

Вы можете использовать «Array.map» и «Object.assign», как показано ниже

var permissions = [{"PermCode":"BOF","IsvalidPerm":true},{"PermCode":"CM","IsvalidPerm":false},{"PermCode":"CV","IsvalidPerm":true},{"PermCode":"DAS","IsvalidPerm":true},{"PermCode":"RPT","IsvalidPerm":true},{"PermCode":"VM","IsvalidPerm":true}]

let result = Object.assign(...permissions.map(d => ({ [d.PermCode]: d.IsvalidPerm})))

console.log(result)
0 голосов
/ 19 ноября 2018

Вы можете использовать некоторый синтаксис ES6, используя Object.assign, расширенный синтаксис, вычисленные свойства, и тогда он действительно получит очень функциональное программирование стиль:

var permissions = [{"PermCode":"BOF","IsvalidPerm":true},{"PermCode":"CM","IsvalidPerm":false},{"PermCode":"CV","IsvalidPerm":true},{"PermCode":"DAS","IsvalidPerm":true},{"PermCode":"RPT","IsvalidPerm":true},{"PermCode":"VM","IsvalidPerm":true}];

const result = Object.assign(...permissions.map(
    ({PermCode, IsvalidPerm}) => ({[PermCode]: IsvalidPerm})
));

console.log(result);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...