gpt4 book ai didi

javascript - 查找包含值的嵌套对象

转载 作者:行者123 更新时间:2023-11-30 09:18:01 25 4
gpt4 key购买 nike

我有一个包含多个其他对象的对象,在这些嵌套对象中是一个包含多个对象的数组,每个对象都有一个uid。我正在尝试遍历对象并找到包含特定 uid 的对象。

我的数据是这样的

const data = {
"3c5671fde44f44f9ad59d59eb810d87e": {
"heading": "Heading 1",
"items": [
{
"content": {
"uid": "4fcd5f4af7a448d48463d4e0a11297d9"
}
},
{
"content": {
"uid": "31f975440a0a431592e127b2891cd142"
}
}
]
},
"ea80e8315b554c9bb40958a6cacf4b0c": {
"heading": "Heading 2",
"items": [
{
"content": {
"uid": "d6de8db4c2a74da6915a44d3964277d6"
}
}
]
}
}

我要搜索的 uidd6de8db4c2a74da6915a44d3964277d6 当找到我想返回它的父对象时,我可以访问 heading 属性。

当前代码看起来像这样,但它不起作用,这是漫长的一天,所以我可能遗漏了一些非常简单的东西。

const currentUid = "d6de8db4c2a74da6915a44d3964277d6";

const currentHeading = Object.keys(data).forEach(section => {
return data[section].items.filter(item => {
return item.content.uid === currentUid;
});
});

当调试成功时,当它找到正确的 uid 时,它会评估为 true,它只是不返回任何内容。

欢迎任何帮助!

最佳答案

forEach 仅用于循环数组,使用 findObject.keys(data) 中查找对象的键。在回调中使用 some 而不是 filter 来检查是否存在。此解决方案将导致对象的键或 null。要获取对象,只需检查是否返回了一个键,然后使用该键来获取对象:

const currentHeadingKey = Object.keys(data).find(section => {
return data[section].items.some(item => {
return item.content.uid === currentUid;
});
});

const currentHeading = currentHeadingKey != null ? data[currentHeadingKey] : null;

currentHeading 现在是整个对象(如果找到),否则为 null。您可以访问该对象的 heading 属性。

注意:由于findsome的回调都只有一条语句,可以使用箭头函数的隐式返回缩短代码:

const currentHeadingKey = Object.keys(data).find(section =>
data[section].items.some(item => item.content.uid === currentUid)
);

关于javascript - 查找包含值的嵌套对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53696986/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com