javascript 嵌套对象到数组到对象

goucqfw6  于 2023-04-19  发布在  Java
关注(0)|答案(2)|浏览(167)

我需要帮助从一个本身嵌套在数组中的对象中访问键值对的值(数组中有2个键值对的几个对象几个数组到一个对象中)。
例如,我只需要访问其中一个名称,例如Max或Lucas...
我试图访问它,但没有运气...任何帮助将不胜感激。

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.log that would return only a // single in the output.

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

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

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

// The one below does not work
// const [, , {name}] = nested;
// console.log(`${Object.values[40]}`);
eanckbw9

eanckbw91#

如果你知道你需要访问的键和索引,你可以只执行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的,因为数字值不能与点表示法一起使用。

bvjxkvbb

bvjxkvbb2#

你似乎搞不清楚你在这里处理的是什么。你首先有一个对象,所以const [, , {name}] = nested;不会做任何事情。它是一个对象,而不是一个数组。
Object.values[40]也是一样。对于那个,你有一个对象数组,所以在那个位置没有对象来获取值。无论如何,你在那里错误地使用了Object.values。你会做类似Object.values(nested['40'][0])的事情。
尝试:

console.log(nested['40']);
console.log(nested['40'][0]);
console.log(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" },
    ],
};

相关问题