Вложенные объекты в массивы в объект

Мне нужна помощь, чтобы получить доступ к значению пары ключ-значение из объекта, который сам вложен в массив (несколько объектов с 2 парами ключ-значение внутри массива Несколько массивов в объект).

Так, например, мне нужно было бы получить доступ только к одному из имен, таких как Макс или Лукас...

Я пытался получить к нему доступ, но не повезло... Любая помощь будет высоко оценена.

const nested = {
    40: [
        { hello: "1", name: "Max" },
        { hello: "2", name: "Julie" },
        { hello: "3", name: "Mark" },
        { hello: "4", name: "Isabella" },
    ],
    50: [
        { hello: "1", name: "William" },
        { hello: "2", name: "James" },
        { hello: "3", name: "Lucas" },
        { hello: "4", name: "John" },
    ],
};


// Here is what I tried but I didn't find any way to access a console.info that would return only a // single in the output.


const keysHello = Object.keys(nested);
console.info("keysHello", keysHello); // ['40', '50']

const values = Object.values(nested);
console.info("values", values); // [[{…}, {…}, {…}, {…}], [{…}, {…}, {…}, {…}])]

const keysValues = Object.entries(nested);
console.info("keysValues", keysValues); // [['40', [{…}, {…}, {…}, {…}]], ['50', [{…}, {…}, {…}, {…}]]

// The one below does not work
// const [, , {name}] = nested;
// console.info(`${Object.values[40]}`);
Поведение ключевого слова "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
1
50
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

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

Если вы знаете ключ и индекс, к которому вам нужно получить доступ, вы можете просто сделать nested['40'][0].name, например.

Более общий:

const nested = {
    40: [
        { hello: "1", name: "Max" },
        { hello: "2", name: "Julie" },
        { hello: "3", name: "Mark" },
        { hello: "4", name: "Isabella" },
    ],
    50: [
        { hello: "1", name: "William" },
        { hello: "2", name: "James" },
        { hello: "3", name: "Lucas" },
        { hello: "4", name: "John" },
    ],
};

const key = '40';
const index = 0;

const { name } = nested[key][index];

Посмотрите, как вы не можете сделать nested.40, так как числовые значения не могут использоваться с точечной записью.

Вы, кажется, запутались в том, с чем вы здесь работаете. Сначала у вас есть объект, поэтому const [, , {name}] = nested; ничего не сделает. Это объект, а не массив.

То же самое для Object.values[40]. С этим у вас есть массив объектов, поэтому в этом месте нет объекта для получения значений. В любом случае, вы неправильно используете Object.values. Вы бы сделали что-то вроде Object.values(nested['40'][0]).

Пытаться:

console.info(nested['40']);
console.info(nested['40'][0]);
console.info(Object.values(nested['40'][0]));

Также стоит упомянуть, что хотя вы пытаетесь работать с числами, они используются для массивов, а числа здесь преобразуются (изменяются) в строки (при работе с ключами объекта). Поэтому лучше просто работать со строками напрямую, чтобы избежать путаницы.

const nested = {
    '40': [
        { hello: "1", name: "Max" },
        { hello: "2", name: "Julie" },
        { hello: "3", name: "Mark" },
        { hello: "4", name: "Isabella" },
    ],
    '50': [
        { hello: "1", name: "William" },
        { hello: "2", name: "James" },
        { hello: "3", name: "Lucas" },
        { hello: "4", name: "John" },
    ],
};

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