Как я могу обернуть значение JSON в фигурные скобки? - PullRequest
0 голосов
/ 05 июля 2019

Допустим, у меня есть такой json (используйте JSON.stringify)

{name: 'Bill', фамилия: 'Smith'}

И я хочузначение, заключенное в фигурные скобки, например:

{name: {value: 'Bill'}, фамилия: {value: 'Smith'}}

Так что любая идеясделать это, используя JavaScript или Lodash?

Ответы [ 3 ]

1 голос
/ 05 июля 2019

Я бы использовал Object.entries на входе, отобразил бы вложенный объект, затем вызвал Object.fromEntries, чтобы преобразовать его снова:

const input = { name: 'Bill', lastname: 'Smith'};
const newObj = Object.fromEntries(
  Object.entries(input).map(
    ([key, value]) => ([key, { value }])
  )
);
console.log(newObj);

Object.fromEntries - это довольно новый метод, поэтому для старых браузеров следует либо включить полифилл, либо использовать что-то вроде .reduce:

const input = { name: 'Bill', lastname: 'Smith'};
const newObj = Object.entries(input).reduce(
  (a, [key, value]) => {
    a[key] = { value };
    return a;
  },
  {}
);
console.log(newObj);
0 голосов
/ 05 июля 2019

Вы можете использовать lodash's _.mapValues() для возврата нового объекта с преобразованными значениями:

const object = { name: 'Bill', lastname: 'Smith'};

const result = _.mapValues(object, value => ({ value }));

console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.js"></script>
0 голосов
/ 05 июля 2019

Вы можете перебирать ключи объекта с помощью for...in и обновлять его следующим образом:

const input = { name: 'Bill', lastname: 'Smith'};

for (const key in input) {
  input[key] = { value: input[key] }
}

console.log(input)

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

const input = { name: 'Bill', lastname: 'Smith'},
      output = {}

for (const key in input) {
  output[key] = { value: input[key] }
}

console.log(output)
...