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