如何在javascript中使用索引浏览嵌套的JSON文件?

如何在javascript中使用索引浏览嵌套的JSON文件?,javascript,json,react-native,Javascript,Json,React Native,我对编码非常陌生,目前,我正在编写一个React原生项目。对不起,如果问题太简单的话。我尝试了很多导航方法,但都失败了。 我有一个JSON文件,数据如下 { "values" : { "EquityTechnology": { "_figure": [ 9.138790534659202 ], "ICICIPrudentialTechnologyFundGrowth": { "_figure":

我对编码非常陌生,目前,我正在编写一个React原生项目。对不起,如果问题太简单的话。我尝试了很多导航方法,但都失败了。 我有一个JSON文件,数据如下

{
"values" : {
      "EquityTechnology": {
        "_figure": [
          9.138790534659202
        ],
        "ICICIPrudentialTechnologyFundGrowth": {
          "_figure": [
            10.6484932862722
          ]
        },
        "Franklin Infotech Fund-Growth": {
          "_figure": [
            7.96902834459266
          ]
        },
        "Birla Sun Life New Millenium Fund - Growth - Regular Plan": {
          "_figure": [
            8.79884997311275
          ]
        },
        "SBI IT FUND - REGULAR PLAN - GROWTH": {
          "_figure": [
            null
          ]
        }
      },
      "Equity - SmallCap": {
        "_figure": [
          14.0064060591969
        ],
        "HDFC Small Cap Fund - Regular Growth Plan": {
          "_figure": [
            null
          ]
        },
        "Reliance Mid & Small Cap Fund -Growth Plan -Growth Option": {
          "_figure": [
            11.8481966627509
          ]
        },
        "Franklin India Smaller Companies Fund-Growth": {
          "_figure": [
            15.3302065566009
          ]
        },
        "Sundaram S.M.I.L.E.Fund-Growth": {
          "_figure": [
            11.754220292209
          ]
        },
        "SBI Magnum MIDCAP FUND - REGULAR PLAN - GROWTH": {
          "_figure": [
            14.9351631127958
          ]
        },
        "Birla Sun Life Small & Midcap Fund - GROWTH": {
          "_figure": [
            12.3666676648488
          ]
        },
        "L&T Emerging Businesses Fund - Regular Plan - Growth Option": {
          "_figure": [
            null
          ]
        },
        "Canara Robeco Emerging Equities - Regular Plan - GROWTH": {
          "_figure": [
            14.6579568171628
          ]
        },
        "Reliance Small Cap Fund - Growth Plan - Growth Option": {
          "_figure": [
            15.0019513606657
          ]
        },
        "DSP BlackRock Micro Cap Fund - Regular - Growth": {
          "_figure": [
            16.1568860065413
          ]
        }
      },
      "Equity - Pharma": {
        "_figure": [
          12.966782129169834
        ],
        "SBI PHARMA - REGULAR PLAN -GROWTH": {
          "_figure": [
            14.9918670876748
          ]
        },
        "UTI Pharma & Healthcare Fund-Growth Option": {
          "_figure": [
            11.2119667676491
          ]
        },
        "Reliance Pharma Fund-Growth Plan-Growth Option": {
          "_figure": [
            12.6965125321856
          ]
        }
      },
      "Equity - MultiCap": {
        "DSP BlackRock Equity Fund - Regular Plan - Growth": {
          "_figure": [
            8.32832307169916
          ]
        },
        "DSP BlackRock Opportunities Fund-Regular Plan - Growth": {
          "_figure": [
            9.72369143832476
          ]
        },
        "MOSt Focused Multicap 35-Regular Plan-Growth Option": {
          "_figure": [
            null
          ]
        },
        "Reliance Equity Opportunities  Fund-Growth Plan-Growth Option": {
          "_figure": [
            9.79339882843478
          ]
        },
        "L&T Equity Fund-Regular Plan-Growth Option": {
          "_figure": [
            null
          ]
        },
        "IIFL India Growth Fund -Regular Plan - Growth": {
          "_figure": [
            null
          ]
        },
        "SBI Magnum Multicap Fund - REGULAR PLAN -Growth Option": {
          "_figure": [
            10.1704693596904
          ]
        },
        "Kotak Select Focus Fund - Growth": {
          "_figure": [
            10.7785458258239
          ]
        },
        "HDFC Equity Fund - Growth Option": {
          "_figure": [
            8.29168295966879
          ]
        },
        "Franklin India Flexi Cap Fund-Growth Plan": {
          "_figure": [
            9.52777086776355
          ]
        },
        "_figure": [
          9.998290130663644
        ],
        "Franklin India High Growth Companies Fund - Growth Plan": {
          "_figure": [
            12.0111958711599
          ]
        },
        "Birla Sun Life Equity Fund - Growth - Regular Plan": {
          "_figure": [
            10.5597033707683
          ]
        },
        "ICICI Prudential Value Discovery Fund - Growth": {
          "_figure": [
            12.494420125849
          ]
        },
        "Axis Equity Fund - Growth": {
          "_figure": [
            8.30198971811754
          ]
        }
      },
      "Equity - FMCG": {
        "_figure": [
          12.9391809175777
        ],
        "SBI FMCG FUND - REGULAR - GROWTH": {
          "_figure": [
            null
          ]
        },
        "ICICI Prudential FMCG Fund - Growth": {
          "_figure": [
            12.9391809175777
          ]
        }
      },
      "Equity - Banking": {
        "_figure": [
          7.756301964533782
        ],
        "UTI Banking Sector Fund-Income Option": {
          "_figure": [
            4.48544488820235
          ]
        },
        "Kotak Banking ETF": {
          "_figure": [
            null
          ]
        },
        "Birla Sun Life Banking and Financial Services Fund - Regular Plan - Growth": {
          "_figure": [
            null
          ]
        },
        "R*Shares Bank BeES": {
          "_figure": [
            null
          ]
        },
        "Reliance Banking Fund-Growth Plan-Growth Option": {
          "_figure": [
            8.2686147173821
          ]
        },
        "SBI BANKING & FINANCIAL SERVICES FUND - REGULAR PLAN - GROWTH": {
          "_figure": [
            null
          ]
        },
        "ICICI Prudential Banking and Financial Services Fund -  Growth": {
          "_figure": [
            11.0147287026105
          ]
        },
        "UTI Banking Sector Fund-Growth Option": {
          "_figure": [
            7.25641954994018
          ]
        }
      },
      "Gold Fund": {
        "R*Shares Gold BeES": {
          "_figure": [
            null
          ]
        },
        "_figure": [
          4.0762242905284065
        ],
        "HDFC Gold Exchange Traded Fund": {
          "_figure": [
            6.03459415600124
          ]
        },
        "SBI GOLD EXCHANGE TRADED SCHEME": {
          "_figure": [
            6.14783904734468
          ]
        },
        "KOTAK GOLD ETF": {
          "_figure": [
            -3.40119263557552
          ]
        },
        "Kotak Gold Fund Growth": {
          "_figure": [
            5.61706623223513
          ]
        },
        "Axis Gold ETF": {
          "_figure": [
            5.9828146526365
          ]
        }
      }
      }
}
我想使用索引浏览JSON,因为数据是动态的,名称可能会随着时间的推移而改变。例如,我应该如何访问“SBI PHARMA-定期计划-增长”的“U图”下的“14.9918670876748”,而“Equity-PHARMA”下的“14.9918670876748”。我想检索所有项目的“\u figure”。我在循环中尝试了..,但它只返回嵌套对象的索引。是否有任何方法可以使用索引浏览JSON文件

先谢谢你

很抱歉英语不好。

Object.prototype.hasOwnProperty应该可以做到这一点。这将在迭代时获得键和值。 例如:

var buz = {
  fog: 'stack'
};

for (var name in buz) {
  if (buz.hasOwnProperty(name)) {
    console.log('this is fog (' + 
      name + ') for sure. Value: ' + buz[name]);
  }
  else {
    console.log(name); // toString or something else
  }
}

文档链接:

使用此链接从对象as数组中提取所有图形

var figures=[];
Object.keys(data.values).forEach(function(val){
 Object.keys(data.values[val]).forEach(function(_val){
    if(data.values[val][_val]&&data.values[val][_val]._figure){
       figures.push(data.values[val][_val]._figure[0]);
    }
  });
})

console.log(figures);
片段-1

风险值数据={ 价值观:{ 设备技术:{ _图:[ 9.138790534659202 ], ICIC审慎技术基金增长:{ _图:[ 10.6484932862722 ] }, 富兰克林信息技术基金增长:{ _图:[ 7.96902834459266 ] }, Birla Sun Life新千年基金-增长-定期计划:{ _图:[ 8.79884997311275 ] }, SBI IT基金-定期计划-增长:{ _图:[ 无效的 ] } }, 股本-小盘股:{ _图:[ 14.0064060591969 ], HDFC小型股基金-常规增长计划:{ _图:[ 无效的 ] }, 信实中小型基金-增长计划-增长选项:{ _图:[ 11.8481966627509 ] }, 富兰克林印度小型公司基金增长:{ _图:[ 15.3302065566009 ] }, Sundaram S.M.I.L.E.基金增长:{ _图:[ 11.754220292209 ] }, SBI Magnum MIDCAP基金-定期计划-增长:{ _图:[ 14.9351631127958 ] }, Birla Sun Life中小型基金-增长:{ _图:[ 12.3666676648488 ] }, L&T新兴业务基金-常规计划-增长选项:{ _图:[ 无效的 ] }, 卡纳拉·罗伯科新兴股票-常规计划-增长:{ _图:[ 14.6579568171628 ] }, 信实小型股基金-增长计划-增长选项:{ _图:[ 15.0019513606657 ] }, DSP贝莱德微盘基金-常规-增长:{ _图:[ 16.1568860065413 ] } }, 股权-制药:{ _图:[ 12.966782129169834 ], SBI制药公司-定期计划-增长:{ _图:[ 14.9918670876748 ] }, UTI制药和医疗保健基金增长选项:{ _图:[ 11.2119667676491 ] }, 信实制药基金增长计划增长选项:{ _图:[ 12.6965125321856 ] } }, 权益-MultiCap:{ DSP贝莱德股票基金-常规计划-增长:{ _图:[ 8.32832307169916 ] }, DSP贝莱德机会基金定期计划-增长:{ _图:[ 9.72369143832476 ] }, 最受关注的Multicap 35常规计划增长选项:{ _图:[ 无效的 ] }, 信实股票机会基金增长计划增长选项:{ _图:[ 9.79339882843478 ] }, L&T股票基金定期计划增长期权:{ _图:[ 无效的 ] }, IIFL印度增长基金-定期计划-增长:{ _图:[ 无效的 ] }, SBI Magnum Multicap基金-定期计划-增长选项:{ _图:[ 10.1704693596904 ] }, Kotak Select Focus基金-增长:{ _图:[ 10.7785458258239 ] }, HDFC股票基金-增长期权:{ _图:[ 8.29168295966879 ] }, 富兰克林印度Flexi Cap基金增长计划:{ _图:[ 9.52777086776355 ] }, _图:[ 9.998290130663644 ], 富兰克林印度高增长公司基金-增长计划:{ _图:[ 12 0111958711599 ] }, Birla Sun人寿股票基金-增长-定期计划:{ _图:[ 10.5597033707683 ] }, ICICI保诚价值发现基金-增长:{ _图:[ 12.494420125849 ] }, 安讯士股票基金-增长:{ _图:[ 8.30198971811754 ] } }, 权益-快速消费品:{ _图:[ 12.9391809175777 ], SBI快速消费品基金-定期-增长:{ _图:[ 无效的 ] }, ICICI保诚快速消费品基金-增长:{ _图:[ 12.9391809175777 ] } }, 股权银行:{ _图:[ 7.756301964533782 ], UTI银行业基金收益期权:{ _图:[ 4.48544488820235 ] }, Kotak银行ETF:{ _图:[ 无效的 ] }, Birla Sun人寿银行和金融服务基金-定期计划-增长:{ _图:[ 无效的 ] }, R*股份银行:{ _图:[ 无效的 ] }, 信实银行基金增长计划增长方案:{ _图:[ 8.2686147173821 ] }, SBI银行和金融服务基金-定期计划-增长:{ _图:[ 无效的 ] }, ICICI保诚银行和金融服务基金-增长:{ _图:[ 11.0147287026105 ] }, UTI银行业基金增长选项:{ _图:[ 7.25641954994018 ] } }, 黄金基金:{ R*分享黄金蜜蜂:{ _图:[ 无效的 ] }, _图:[ 4.0762242905284065 ], HDFC黄金交易所交易基金:{ _图:[ 6.03459415600124 ] }, SBI黄金交易所交易计划:{ _图:[ 6.14783904734468 ] }, KOTAK黄金ETF:{ _图:[ -3.40119263557552 ] }, Kotak黄金基金增长:{ _图:[ 5.61706623223513 ] }, 安讯士黄金交易所买卖基金:{ _图:[ 5.9828146526365 ] } } } }; var数字=[]; Object.keysdata.values.forEachfunctionval{ Object.keysdata.values[val].forEachfunction\u val{ ifdata.values[val][\u val]&数据.values[val][\u val].\u图{ figures.pushdata.values[val][u val]。[u figures[0]; } }; }
控制台。对数图形;为什么首先要使用object,然后使用array?是否要访问所有图形?hi Nadir,我要访问所有图形。JSON数据是在这个结构中提供给我的。如果所有数据都在一个数组中重新调整,可以吗?是的,没问题,Nadir。非常感谢,Nadir。我会试试这个的。非常感谢,邪恶的波克肖医生~~
var rObj = {
"values" : {
      "EquityTechnology": {
        "_figure": [
          9.138790534659202
        ],
        "ICICIPrudentialTechnologyFundGrowth": {
          "_figure": [
            10.6484932862722
          ]
        },
        "Franklin Infotech Fund-Growth": {
          "_figure": [
            7.96902834459266
          ]
        },
        "Birla Sun Life New Millenium Fund - Growth - Regular Plan": {
          "_figure": [
            8.79884997311275
          ]
        },
        "SBI IT FUND - REGULAR PLAN - GROWTH": {
          "_figure": [
            null
          ]
        }
      },
      "Equity - SmallCap": {
        "_figure": [
          14.0064060591969
        ],
        "HDFC Small Cap Fund - Regular Growth Plan": {
          "_figure": [
            null
          ]
        },
        "Reliance Mid & Small Cap Fund -Growth Plan -Growth Option": {
          "_figure": [
            11.8481966627509
          ]
        },
        "Franklin India Smaller Companies Fund-Growth": {
          "_figure": [
            15.3302065566009
          ]
        },
        "Sundaram S.M.I.L.E.Fund-Growth": {
          "_figure": [
            11.754220292209
          ]
        },
        "SBI Magnum MIDCAP FUND - REGULAR PLAN - GROWTH": {
          "_figure": [
            14.9351631127958
          ]
        },
        "Birla Sun Life Small & Midcap Fund - GROWTH": {
          "_figure": [
            12.3666676648488
          ]
        },
        "L&T Emerging Businesses Fund - Regular Plan - Growth Option": {
          "_figure": [
            null
          ]
        },
        "Canara Robeco Emerging Equities - Regular Plan - GROWTH": {
          "_figure": [
            14.6579568171628
          ]
        },
        "Reliance Small Cap Fund - Growth Plan - Growth Option": {
          "_figure": [
            15.0019513606657
          ]
        },
        "DSP BlackRock Micro Cap Fund - Regular - Growth": {
          "_figure": [
            16.1568860065413
          ]
        }
      },
      "Equity - Pharma": {
        "_figure": [
          12.966782129169834
        ],
        "SBI PHARMA - REGULAR PLAN -GROWTH": {
          "_figure": [
            14.9918670876748
          ]
        },
        "UTI Pharma & Healthcare Fund-Growth Option": {
          "_figure": [
            11.2119667676491
          ]
        },
        "Reliance Pharma Fund-Growth Plan-Growth Option": {
          "_figure": [
            12.6965125321856
          ]
        }
      },
      "Equity - MultiCap": {
        "DSP BlackRock Equity Fund - Regular Plan - Growth": {
          "_figure": [
            8.32832307169916
          ]
        },
        "DSP BlackRock Opportunities Fund-Regular Plan - Growth": {
          "_figure": [
            9.72369143832476
          ]
        },
        "MOSt Focused Multicap 35-Regular Plan-Growth Option": {
          "_figure": [
            null
          ]
        },
        "Reliance Equity Opportunities  Fund-Growth Plan-Growth Option": {
          "_figure": [
            9.79339882843478
          ]
        },
        "L&T Equity Fund-Regular Plan-Growth Option": {
          "_figure": [
            null
          ]
        },
        "IIFL India Growth Fund -Regular Plan - Growth": {
          "_figure": [
            null
          ]
        },
        "SBI Magnum Multicap Fund - REGULAR PLAN -Growth Option": {
          "_figure": [
            10.1704693596904
          ]
        },
        "Kotak Select Focus Fund - Growth": {
          "_figure": [
            10.7785458258239
          ]
        },
        "HDFC Equity Fund - Growth Option": {
          "_figure": [
            8.29168295966879
          ]
        },
        "Franklin India Flexi Cap Fund-Growth Plan": {
          "_figure": [
            9.52777086776355
          ]
        },
        "_figure": [
          9.998290130663644
        ],
        "Franklin India High Growth Companies Fund - Growth Plan": {
          "_figure": [
            12.0111958711599
          ]
        },
        "Birla Sun Life Equity Fund - Growth - Regular Plan": {
          "_figure": [
            10.5597033707683
          ]
        },
        "ICICI Prudential Value Discovery Fund - Growth": {
          "_figure": [
            12.494420125849
          ]
        },
        "Axis Equity Fund - Growth": {
          "_figure": [
            8.30198971811754
          ]
        }
      },
      "Equity - FMCG": {
        "_figure": [
          12.9391809175777
        ],
        "SBI FMCG FUND - REGULAR - GROWTH": {
          "_figure": [
            null
          ]
        },
        "ICICI Prudential FMCG Fund - Growth": {
          "_figure": [
            12.9391809175777
          ]
        }
      },
      "Equity - Banking": {
        "_figure": [
          7.756301964533782
        ],
        "UTI Banking Sector Fund-Income Option": {
          "_figure": [
            4.48544488820235
          ]
        },
        "Kotak Banking ETF": {
          "_figure": [
            null
          ]
        },
        "Birla Sun Life Banking and Financial Services Fund - Regular Plan - Growth": {
          "_figure": [
            null
          ]
        },
        "R*Shares Bank BeES": {
          "_figure": [
            null
          ]
        },
        "Reliance Banking Fund-Growth Plan-Growth Option": {
          "_figure": [
            8.2686147173821
          ]
        },
        "SBI BANKING & FINANCIAL SERVICES FUND - REGULAR PLAN - GROWTH": {
          "_figure": [
            null
          ]
        },
        "ICICI Prudential Banking and Financial Services Fund -  Growth": {
          "_figure": [
            11.0147287026105
          ]
        },
        "UTI Banking Sector Fund-Growth Option": {
          "_figure": [
            7.25641954994018
          ]
        }
      },
      "Gold Fund": {
        "R*Shares Gold BeES": {
          "_figure": [
            null
          ]
        },
        "_figure": [
          4.0762242905284065
        ],
        "HDFC Gold Exchange Traded Fund": {
          "_figure": [
            6.03459415600124
          ]
        },
        "SBI GOLD EXCHANGE TRADED SCHEME": {
          "_figure": [
            6.14783904734468
          ]
        },
        "KOTAK GOLD ETF": {
          "_figure": [
            -3.40119263557552
          ]
        },
        "Kotak Gold Fund Growth": {
          "_figure": [
            5.61706623223513
          ]
        },
        "Axis Gold ETF": {
          "_figure": [
            5.9828146526365
          ]
        }
      }
      }
}

//console.log(rObj.values;);
//container
var values = rObj.values;
//Index
var find = "Equity - Pharma";
//subIndex
var subFind = "SBI PHARMA - REGULAR PLAN -GROWTH";
var case1 = values[find][subFind]["_figure"][0];
If you want to find the specific just change the variables the corresponding 
names [find] i.e "Equity - Pharma" then subFind i.e "SBI PHARMA - REGULAR 
PLAN -GROWTH"

for(var index in values) {
    if(index === find) {
        var nextIndex = values[index];
        for(var nextFind in nextIndex) {
            var Item = nextIndex[nextFind];
            if(nextFind === subFind) {
                  console.log(Item["_figure"][0]);
            }
        }
    }
}