Как переназначить сопоставление значения ключа json в javascript / typcript? - PullRequest
0 голосов
/ 12 ноября 2018

С учетом

{"a": {"name": "king", "firstname": "Thomas"},"b": {"age": "21"}}

Я пытаюсь найти простой способ преобразования его в

{"name": "king","firstname": "Thomas","age": "21"}

В Javascript / Angular. Может быть, у кого-то есть идея Goode, я буду очень благодарен. Я пытаюсь изменить ответ, чтобы он подходил для запроса API.

Изменить: я изменил вопрос, я забыл упомянуть, что у меня есть несколько пар ключ-значение на втором уровне.

Я пытаюсь добиться того, чтобы избавиться от ключей первого уровня в json-файле, потому что API, которому я отправляю его, не имеет их, он просто использует ключ на втором уровне

Ответы [ 2 ]

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

Это должно работать для вас.Я добавил третье свойство к объекту, чтобы показать вам, что происходит, если у вас есть два объекта с одинаковым свойством (тот, который повторяется позже, перезаписывает предыдущий, но поскольку вы не можете полагаться на порядок свойств в объекте, этоможет привести к неожиданным результатам).Если ни одно из ваших свойств не продублировано, не беспокойтесь.

var data = {"a": {"name": "thomas"},"b": {"age": "21"},"c": {"age": "22"}};

// "c" will overwrite "b"
var converted = Object.keys(data).reduce((o, e) => Object.assign(o, data[e]), {});
// Object.keys(data) gives the array [“a”, “b”, “c”]
// Reduce that array to an object by assigning, to a new empty object,
// the properties of the objects found in each property of data

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

вы можете попробовать что-то вроде:

const original = {"a": {"name": "thomas"},"b": {"age": "21"}}
const result = Object.values(original)

Или, если вам нужно больше гибкости:

const original = {"a": {"name": "thomas"},"b": {"age": "21"}}
const result = []
Object.keys(original).forEach( key => result.push(original[key]) )

С уважением

...