Я пытаюсь получить данные json сверху вниз



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Попробуй это:
const finalResult = {};
const data = {
"data": [
{
"persons": {
"Dupont nicolas": "President",
"George frimaolo": "engineer",
"Tiprana masilo": "football player"
}
},
{
"persons": {
"Balack martini": "author",
"Dupont nicolas": "Student",
"Joseph Allen": "dentist"
}
},
{
"persons": {
"Fred Samanta": "baker",
"Romero flagipi": "actor",
"Fred Samanta": "astronaut",
"Joseph Allen": "pilot",
"Anne Hedley": "teacher"
}
}
]
}
for (let i in data.data) {
for (let j in data.data[i].persons) {
finalResult[j] = finalResult[j] ? finalResult[j] : data.data[i].persons[j];
}
}
console.info(finalResult);Нет, это только потому, что "Дюпон Николя" называется дважды. Я получаю ваши данные сверху вниз.
да, в том-то и дело, что когда он вызывается два (или много) раз, мы должны получить первый
Фред Саманта вызывается два раза в одном и том же Object, что делает ваш JSON недействительным, он будет перезаписан в JS.
Простой Array.reduce должен достичь вашей цели.
const obj = {
// json data shown in your question
}
const result = obj.data.reduce(
(acc, cur) => ({
...cur.persons,
...acc,
}),
{}
);
спасибо за ответ, но мне нужно в обратном смысле, сверху вниз
Не уверен, что понимаю. Вывод из моего ответа дает тот же результат, что и в вашем вопросе. Ключи могут быть в другом порядке, но результирующий объект содержит правильные значения в соответствии с вашим вопросом. Не могли бы вы уточнить свои потребности?
Используйте reduce и Object.assign
const combine = (arr) =>
arr.reduce((acc, { persons }) => Object.assign(acc, persons), {});
const data = [
{
persons: {
"Dupont nicolas": "President",
"George frimaolo": "engineer",
"Tiprana masilo": "football player",
},
},
{
persons: {
"Balack martini": "author",
"Dupont nicolas": "Student",
"Joseph Allen": "dentist",
},
},
{
persons: {
"Fred Samanta": "baker",
"Romero flagipi": "actor",
"Fred Samanta": "astronaut",
"Joseph Allen": "pilot",
"Anne Hedley": "teacher",
},
},
];
console.info(combine(data))
Вот так мы получаем данные снизу вверх! а мне нужно в обратном смысле (сверху вниз)