javascript - JS 对象的索引返回对象中的所有值而不是实际的索引
问题描述
让我快速解释一下,当我从数据库中获取数据时,有一个父对象,里面有一个对象数组,我想要实现的是编写正确的路径,这样我就可以访问数据库中的特定项目.
接收数据时,我存储两个变量,如下所示:
for (let a in obj) {
list.push(obj[a]);
keys.push(a);
}
this.setState({
list: list,
keys: keys,
});
执行此代码将打印以下内容:
console.log(this.state.keys[index]);
HZlgUZ21vKbungnxaxDJXrTUr2z1
这总是返回确切的父对象id
但问题是我无法访问嵌套项的索引:
console.log(this.state.list[index]);
对象{-LORYsI9mLP8mu_2BTKS:对象,-LORZVOq8SMUgTOPgpXK:对象,-LORZtqZeg3nyOW4p9I1:对象,-LOYbElg81jbPtao2nl4:对象}
我正在寻找的是嵌套项目 ID 不是所有的值
我附上了一张数据库的图片,这样你就可以看到它的样子
这是视图的最小表示:
const listItems = this.state.list.map((item, index) =>
Object.values(item).map(nestedItem => (
<div>
{nestedItem.title}
<button
onClick={() => this.update(index)}
>
CLICK
</button>
</div>
))
);
解决起来很容易,只是我还在学习编程的主要概念,但是这种嵌套对象总是让我感到沮丧。请有人来救我
解决方案
您可以尝试在您的示例中应用以下概念吗?
考虑你有一个 JSON 结构,比如
var obj = {
a: {
blue:16,
green:30,
red:39
},
b: {
orange:56,
yellow:34,
white:35
},
c: {
black:3,
brown:43,
purple:12
}
};
现在,当你for...in
在这个对象上运行一个循环时
for (let key in obj) {
list.push(obj[key]);
keys.push(a);
}
obj[key]
将返回{blue:16,green:30,red:39}
最终被推入列表数组的值
如果你想要蓝色、绿色和红色的值,你可以做类似的事情
Object.keys(obj[key]); //will return an array ['blue', 'green', 'red']
推荐阅读
- reactjs - 如果单个项目更改,请避免循环遍历地图
- flutter - Flutter:使用带有 http 请求的 Firebase 实时数据库实现分页
- javascript - socket.ion passport.js、express.js 和身份验证标头
- reactjs - 如何在 react-leaflet 中使用 leaflet.bezier 插件?
- sqlalchemy - 在两个 SQLAlchemyObjectType 之间共享元类
- javascript - 如何检查邮递员响应中是否没有特定数据?
- javascript - 禁止使用用户 ID discord.js 的用户
- elasticsearch - 如何对 Secured ElasticSearch 执行 curl 命令(在 Openshift 命名空间 openshift-logging 中运行的 ElasticSearch)
- c# - 接受泛型参数为 null 的方法
- swift - 在 swift 上,如何以编程方式隐藏光标并禁用 UITextfield 的剪切/粘贴