迭代嵌套的js对象

时间:2020-10-31 10:01:03

标签: javascript react-native javascript-objects

我在访问此对象时遇到问题:

{
  "BTC": {
    "price": 13322.848306438736,
    "percent_change_24h": 2.00659441,
    "market_cap": 246870460628.15366,
    "volume_24h": 33956399259.1725,
    "circulating_supply": 18529856,
    "total_supply": 18529856,
    "max_supply": 21000000
  },
  "ETH": {
    "price": 380.8150073343507,
    "percent_change_24h": -0.67132589,
    "market_cap": 43115533610.355606,
    "volume_24h": 15706287212.275429,
    "circulating_supply": 113219103.1865,
    "total_supply": 113219103.1865,
    "max_supply": null
  }
}

到目前为止,我已经尝试了Object.key(),map(),使其成为数组,算法方法等。 我可以通过以下方式获取外部对象的列表:

Object.keys(this.state.dataApi).map((value,key)=>(
                   value
                  ))

例如,我可以通过以下方式获取“ BTC”内部的内容:

this.state.dataApi.BTC

但是我无法一一理解它的内部元素。 这是预期的输出示例

https://i.stack.imgur.com/eK8Ic.png

这些是我的输出成功尝试

https://i.stack.imgur.com/AK6lR.png

注意:这也尝试从状态[],{},“”,“”到“”改变类型,因为它将对象保留为原始类型。

3 个答案:

答案 0 :(得分:2)

let obj= {
  "BTC": {
    "price": 13322.848306438736,
    "percent_change_24h": 2.00659441,
    "market_cap": 246870460628.15366,
    "volume_24h": 33956399259.1725,
    "circulating_supply": 18529856,
    "total_supply": 18529856,
    "max_supply": 21000000
  },
  "ETH": {
    "price": 380.8150073343507,
    "percent_change_24h": -0.67132589,
    "market_cap": 43115533610.355606,
    "volume_24h": 15706287212.275429,
    "circulating_supply": 113219103.1865,
    "total_supply": 113219103.1865,
    "max_supply": null
  }
};

console.log(obj["BTC"]);
console.log(obj["ETH"].price);

Object.keys(obj).map((value,key)=>{
   console.log(obj[value]);
   console.log(obj[value].price);
}
                  )

你是对的。但是您需要使用['value']

访问对象

答案 1 :(得分:0)

您是否尝试过for..in循环?您可以使用for...in循环对象。您可以阅读here

const parent = {
  "BTC": {
    "price": 13322.848306438736,
    "percent_change_24h": 2.00659441,
    "market_cap": 246870460628.15366,
    "volume_24h": 33956399259.1725,
    "circulating_supply": 18529856,
    "total_supply": 18529856,
    "max_supply": 21000000
  },
  "ETH": {
    "price": 380.8150073343507,
    "percent_change_24h": -0.67132589,
    "market_cap": 43115533610.355606,
    "volume_24h": 15706287212.275429,
    "circulating_supply": 113219103.1865,
    "total_supply": 113219103.1865,
    "max_supply": null
  }
}

for (const key in parent) { // This is just O(n)
  // key - BTC,ETH
  console.log(parent[key].price)
  console.log(parent[key].percent_change_24h)
}

答案 2 :(得分:0)

使用Object.keys使您处在正确的轨道上。还有一种称为Object.values的方法,该方法为您提供对象的每个键的值

如果我们的对象是data,那么Object.keys(data)将给我们一个二值数组/。之后,例如,我们可以使用map()进行迭代以获取所有价格:

Object.values(o).map(d => d.price)

let o = {
  "BTC": {
    "price": 13322.848306438736,
    "percent_change_24h": 2.00659441,
    "market_cap": 246870460628.15366,
    "volume_24h": 33956399259.1725,
    "circulating_supply": 18529856,
    "total_supply": 18529856,
    "max_supply": 21000000
  },
  "ETH": {
    "price": 380.8150073343507,
    "percent_change_24h": -0.67132589,
    "market_cap": 43115533610.355606,
    "volume_24h": 15706287212.275429,
    "circulating_supply": 113219103.1865,
    "total_supply": 113219103.1865,
    "max_supply": null
  }
}
console.log(Object.values(o))