Извлекать данные json сверху вниз, используя javascript

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

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
91
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Попробуй это:

    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);

Вот так мы получаем данные снизу вверх! а мне нужно в обратном смысле (сверху вниз)

brastima 24.12.2020 17:32

Нет, это только потому, что "Дюпон Николя" называется дважды. Я получаю ваши данные сверху вниз.

FahDev 24.12.2020 17:35

да, в том-то и дело, что когда он вызывается два (или много) раз, мы должны получить первый

brastima 24.12.2020 17:37

Фред Саманта вызывается два раза в одном и том же Object, что делает ваш JSON недействительным, он будет перезаписан в JS.

FahDev 24.12.2020 17:45

Простой Array.reduce должен достичь вашей цели.

const obj = {
  // json data shown in your question
}

const result = obj.data.reduce(
  (acc, cur) => ({
    ...cur.persons,
    ...acc,
  }),
  {}
);

спасибо за ответ, но мне нужно в обратном смысле, сверху вниз

brastima 24.12.2020 17:36

Не уверен, что понимаю. Вывод из моего ответа дает тот же результат, что и в вашем вопросе. Ключи могут быть в другом порядке, но результирующий объект содержит правильные значения в соответствии с вашим вопросом. Не могли бы вы уточнить свои потребности?

Mark Skelton 24.12.2020 17:39

Используйте 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))

Другие вопросы по теме