首页 > 解决方案 > 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>
  ))
);

解决起来很容易,只是我还在学习编程的主要概念,但是这种嵌套对象总是让我感到沮丧。请有人来救我

标签: javascriptreactjsecmascript-6jsx

解决方案


您可以尝试在您的示例中应用以下概念吗?

考虑你有一个 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']

推荐阅读