Карта в Obejct Javascript конвертировать в REACTJS - PullRequest
0 голосов
/ 07 ноября 2018

Я хочу преобразовать следующую Карту в Объект в REACTJS Как я могу достичь этого

[
      {
        "lastName": "Last name should have atleast 1 characters "
      },
      {
        "role": "may not be null"
      },
      {
        "name": "Name should have atleast 1 characters "
      }
    ]

конвертировать в

{
  "lastName": "Last name should have atleast 1 characters ",
  "role": "may not be null",
  "name": "Name should have atleast 1 characters "
}

Ответы [ 3 ]

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

Вам нужно уменьшить массив, чтобы изменить его форму на нужный объект

const a = [
  {
    "lastName": "Last name should have atleast 1 characters "
  },
  {
    "role": "may not be null"
  },
  {
    "name": "Name should have atleast 1 characters "
  }
];

const b = a.reduce((acc, item) => {
  const key = Object.keys(item)[0];
  return {
    ...acc,
    [key]: item[key],
  };
}, []);

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

Вы можете использовать вложенное уменьшение, но ключи ранее в массиве будут перезаписаны более поздними, если ключ в массиве не уникален:

console.log(
  [
    {
      lastName:
        'Last name should have atleast 1 characters ',
    },
    {
      role: 'may not be null',
    },
    {
      name: 'Name should have atleast 1 characters ',
    },
  ].reduce((mainResult, item) =>
    Object.entries(item).reduce(
      (result, [key, value]) => (
        (result[key] = value), result
      ),
      mainResult,
    ),
    {}
  ),
);

Видя ваш ответ (вы должны комментировать, а не добавлять ответ), похоже, что ваш массив представляет собой массив строк JSON, попробуйте следующее:

console.log(
  //array of json strings
  [
    '{"lastName":"Last name should have atleast 1 characters "}',
    '{"role":"may not be null"}',
    '{"name":"Name should have atleast 1 characters "}',
  ]
    .map((item) => JSON.parse(item))
    .reduce((mainResult, item) =>
      Object.entries(item).reduce(
        (result, [key, value]) => (
          (result[key] = value), result
        ),
        mainResult,
      ),
      {}
    ),
);
0 голосов
/ 07 ноября 2018

Array.prototype.reduce () можно использовать для создания объектов из массивов.

См. Практический пример ниже.

// Input.
const input = [{lastName: 'Last name should have atleast 1 characters'}, {role: 'may not be null'}, {name: 'Name should have atleast 1 characters '}]

// Convert Array To Object.
const convertArrayToObject = array => array.reduce((acc, x) => {
  for (const key in x) acc[key] = x[key]
  return acc
}, {})

// Output + Proof.
const output = convertArrayToObject(input)
console.log(output)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...