オブジェクトの配列の中から2か所プロパティ(キー)の値が一致した中の値を取得することはよく考えればわかるけれど、コードを作成するのになかなか時間がかかってしまったのと、次はあまり考えたくないなと思ったのでサンプルコードを残します。
やりたいこと
オブジェクトの中の配列の中のプロパティ値が2箇所一致した時にその配列の別の値を取得する。条件に一致するものが1つと想定している。
サンプルコード
コメントで詳細を書いています。
// オブジェクトを作成
let objarr = {};
// オブジェクトの中に配列を作成
objarr.data = [];
//オブジェクトの配列内に値を追加
objarr.data[0] = {name:’Tom’, age:’40’, country:’UK’};
objarr.data[1] = {name:’Liz’,age:’30’, country:’JA’};
objarr.data[2]= {name:’Joy’,age:’30’, country:’US’};
objarr.data[3]= {name:’Max’,age:’36’, country:’BE’};
objarr.data[4]= {name:’Joy’,age:’36’, country:’CA’};
//取得した値を入れる箱countryを作成
let country =””;
// for文でオブジェクトの配列の長さ分まわす
for(let i = 0 ; i < objarr.data.length ; i++){
// オブジェクトの配列の中から2か所プロパティの値が一致した値を取得
if(objarr.data[i].name == “Joy” && objarr.data[i].age==30 ){
//取得した値をcountryに代入
country = objarr.data[i].country;
// 条件に一致するものが1つなのでbreakを入れ無駄な処理を省く
break;
}
}
console.log(country); // US
もし取得する値が1つではなく複数ある場合は、受け取る箱を配列にしpushして値を追加していく方法もあります。
おわり
1から考えるのは面倒ですね。このくらいなら考えて作れと言われてしまいそうですが面倒なものは面倒なのでこのサンプルコードで時短できることを願います。