オブジェクトの中身の一つの要素をメソッドに利用し、値を受け取り結果をオブジェクトに戻したいけれど、どうやればいいものか。ループで回せばよさそうだけどなかなかイメージができない。
やりたいこと
以下のようなオブジェクトがあるとする。
let person = [
{name : “Nakamoto”, age : 35},
{name :”Hayashi”, age : 40},
{name : “Sasaki”, age : 33},
];
このオブジェクトのnameを引数を持つメソッドがあるとする。
getGender(name);
このnameをオブジェクトを値を使いメソッドから性別を取り出し(データベースなどから値を取得するイメージ)、いまあるオブジェクトに要素を追加できたら完璧です。
こんな感じをめざします。
{name: “Nakamoto”, age: 35, gender: “M”}
{name: “Hayashi”, age: 40, gender: “M”}
{name: “Sasaki”, age: 33, gender: “F”}
オブジェクトの中身を引数としてfor文ループするコードを作成してみる
let person = [
{name : “Nakamoto”, age : 35},
{name :”Hayashi”, age : 40},
{name : “Sasaki”, age : 33},
];
for(let i = 0; i < person.length; i++){
person[i].gender = getGender(person[i].name);
}
function getGender(name){
//メソッドの中身は適当です。イメージではAPIなどを使用し値を取得します。
switch(name){
case “Nakamoto”:
return “M”;
break;
case “Sasaki”:
return “F”;
break;
case “Hayashi”:
return “M”;
break;
}
}
console.log(person);
結果
{name: “Nakamoto”, age: 35, gender: “M”}
{name: “Hayashi”, age: 40, gender: “M”}
{name: “Sasaki”, age: 33, gender: “F”}
オブジェクトへ無事取得した値が追加されました。
おわり
オブジェクトには値はあとから追加できないんじゃないかと勝手に勘違いをしていて作成するのに苦労しました。できることがわかったので次からは困らなさそうです。