JS对象的索引返回对象中的所有值,而不是实际索引

时间:2018-10-11 15:29:43

标签: javascript reactjs ecmascript-6 jsx

让我非常迅速地解释这一点,当我从数据库中获取数据时,有一个父对象,并且内部有一个对象数组,我要实现的目标是编写正确的路径,以便可以访问特定项目在数据库中。

接收数据时,我将像这样存储两个变量:

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,而不是所有值

我附上了数据库的图片,所以您可以看到它的样子

enter image description here

以下是视图的最小表示形式:

const listItems = this.state.list.map((item, index) =>
        Object.values(item).map(nestedItem => (
<div>
  {nestedItem.title}
  <button
   onClick={() => this.update(index)}
   >
  CLICK
  </button>
</div>
  ))
);

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

1 个答案:

答案 0 :(得分:0)

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

考虑您拥有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']