Мне нужна помощь, чтобы получить доступ к значению пары ключ-значение из объекта, который сам вложен в массив (несколько объектов с 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]}`);
Если вы знаете ключ и индекс, к которому вам нужно получить доступ, вы можете просто сделать 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" },
],
};
Отвечает ли это на ваш вопрос? Как я могу получить доступ и обработать вложенные объекты, массивы или JSON?