2017-09-24 3 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

を使用して、この上で繰り返すことができ、データアレイ

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

を修正することができます。

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

まず、あなたは、あなたがArray#findを使用することができ、statesプロパティを持つPOPERオブジェクトで配列マップとシンプルな条件

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); 
関連する問題