Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 迭代嵌套的js对象_Javascript_React Native_Javascript Objects - Fatal编程技术网

Javascript 迭代嵌套的js对象

Javascript 迭代嵌套的js对象,javascript,react-native,javascript-objects,Javascript,React Native,Javascript Objects,我访问此对象时遇到问题: { "BTC": { "price": 13322.848306438736, "percent_change_24h": 2.00659441, "market_cap": 246870460628.15366, "volume_24h": 33956399259.1725, "circulating_supply&

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

{
  "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
但我没能一个接一个地了解它的内部元素。 这是预期的输出示例

这些是我成功的尝试


注意:这也尝试了从状态[]、{}、“”更改类型,但由于“将对象保留在其原始类型中”,因此“仅”在某个地方给了我一些帮助。

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

const父项={
“BTC”:{
“价格”:13322.848306438736,
“24小时变化百分比”:2.00659441,
“市值”:246870460628.15366,
“24小时卷”:33956399259.1725,
“循环供应”:18529856,
“总供应量”:18529856,
“最大供应量”:21000000
},
“ETH”:{
“价格”:380.8150073343507,
“24小时变化百分比”:-0.67132589,
“市值”:43115533610.355606,
“第24小时卷”:15706287212.275429,
“循环供应”:113219103.1865,
“总供应量”:113219103.1865,
“最大供应量”:空
}
}
对于(const key in parent){//这只是O(n)
//密钥-BTC,ETH
console.log(父项[key].price)
console.log(父项[key].百分比\u变化\u 24小时)

}
使用
Object.keys
时,您的轨迹是正确的。还有另一个名为的方法,它为对象的每个键提供值

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

Object.values(o).map(d => d.price)
设o={
“BTC”:{
“价格”:13322.848306438736,
“24小时变化百分比”:2.00659441,
“市值”:246870460628.15366,
“24小时卷”:33956399259.1725,
“循环供应”:18529856,
“总供应量”:18529856,
“最大供应量”:21000000
},
“ETH”:{
“价格”:380.8150073343507,
“24小时变化百分比”:-0.67132589,
“市值”:43115533610.355606,
“第24小时卷”:15706287212.275429,
“循环供应”:113219103.1865,
“总供应量”:113219103.1865,
“最大供应量”:空
}
}
console.log(Object.values(o))

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

Yes来访问对象,它可以映射所有对象,但是您不能像这样逐个访问它们:getBTC=()=>{for(const key in this.state.dataApi.BTC){console.log(“比特币”,this.state.dataApi[key][“price”]、this.state.dataApi[key][“percent_change\u 24h”]、this.state.dataApi[key][“market\u cap”])}我使用for循环得到一个空答案!上面的解决方案只会一个接一个地迭代,您只需要用
this.state.dataApi
替换
parent
。时间复杂度为O(n)是的,这也适用,但仅适用于映射不选择一个元素,例如仅“BTC”,然后访问其详细信息:Object.values(this.state.dataApi.map(d=>console.log(d.BTC.price))。在这种情况下,对所选元素使用Object.values():
Object.values(this.state.dataApi.BTC)
,给你一个包含BTC每个属性的数组。这确实是最符合逻辑的路径,谢谢你,它成功了!
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);
}
                  )