2017-09-24 52 views
1

我对java脚本很新颖。例如,如果我有一个对象,有没有一种方法可以根据Javascript中的'Value'获取关联值

var countryData = [{name :"India",[{state : "AP",capital:"vjw"}, {state:"TS",capital:"hyd"}] } {name :"Belgium",[{state : "AL",capital:"Montgomery"}, {state:"AK",capital:"Juneau"}] }] 

现在我知道国家&状态值,我必须得到它的资本。

+0

您的内部数组没有密钥。 –

+0

您的JSON数组无效 – Thusitha

+0

了解如何迭代数组和对象以及如何获取键值对。 – wrangler

回答

0

states性质的波普尔对象,则可以使用Array#find

function getCapital(country, state) { 
 
    return (countryData.find(c => c.name === country) || { states: [] }) 
 
     .states.find(s => s.state === state); 
 
} 
 

 
var countryData = [{ name: "India", states: [{ state: "AP", capital: "vjw" }, { state: "TS", capital: "hyd" }] }, { name: "Belgium", states: [{ state: "AL", capital: "Montgomery" }, { state: "AK", capital: "Juneau" }] }]; 
 

 
console.log(getCapital('Belgium', 'AL')); 
 
console.log(countryData);
.as-console-wrapper { max-height: 100% !important; top: 0; }

0

首先让固定数据阵列

var countryData = [ 
    { name: "India", 'states': [ 
      { state: "AP", capital: "vjw" }, 
      { state: "TS", capital: "hyd" } 
     ] 
    }, 
    { name: "Belgium", 'states': [ 
      { state: "AL", capital: "Montgomery" }, 
      { state: "AK", capital: "Juneau" } 
     ] 
    } 
]; 

然后就可以遍历这个使用数组地图和简单条件

let stateCapital = ''; 

countryData.map((country) => { 
    if (country.name === 'India') { 
     country.states.map((state) => { 
      if (state.state === 'AP') { 
       stateCapital = state.capital; 
      } 
     }); 
    } 
}); 
+0

'map'返回一个新的数组,你可以使用'some',如果找到则返回'true',以结束迭代。 –

0

countryData目的是不正确;请参阅并测试以下代码:

var countryData = [{name :"India","0":[{state : "AP",capital:"vjw"}, {state:"TS",capital:"hyd"}] }, {name :"Belgium","0":[{state : "AL",capital:"Montgomery"}, {state:"AK",capital:"Juneau"}] }]; 
var country ='India'; 
var state ='TS'; 
var capital =''; 

for(var i=0; i<countryData.length; i++){ 
    if(countryData[i].name ==country){ 
    for(var i2=0; i2<countryData[i][0].length; i2++){ 
     if(countryData[i][0][i2].state ==state){ 
     capital = countryData[i][0][i2].capital; 
     break; 
     } 
    } 
    } 
} 
alert(capital); 
相关问题