【问题标题】:The index of a JS object returns all values in object rather than the actual indexJS 对象的索引返回对象中的所有值而不是实际的索引
【发布时间】:2019-03-16 18:11:50
【问题描述】:

让我快速解释一下,当我从数据库中获取数据时,有一个父对象,里面有一个对象数组,我想要实现的是编写正确的路径,以便我可以访问特定的项目在数据库中。

接收数据时,我存储两个变量,如下所示:

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>
  ))
);

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

【问题讨论】:

  • 当您查看对象时,您是否有特定的密钥?查看一个对象很简单,但您需要知道自己在寻找什么,或者对所有东西都满意。
  • @zfrisch 在示例中提供我正在尝试做this.state.list[index][3] 但动态生成,这有意义吗?

标签: javascript reactjs ecmascript-6 jsx


【解决方案1】:

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

假设您有一个类似的 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']

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-04-05
  • 2021-06-29
  • 2018-02-23
  • 2020-06-11
  • 1970-01-01
  • 1970-01-01
  • 2019-05-30
相关资源
最近更新 更多