キー値に基づいて JavaScript 配列の行を更新するにはどうすればよいですか? 質問する

キー値に基づいて JavaScript 配列の行を更新するにはどうすればよいですか? 質問する

次のようなデータの配列があります:

var nameInfo  = [{name: "Moroni", age: 50},
                 {name: "Tiancum", age: 43},
                 {name: "Jacob", age: 27},
                 {name: "Nephi", age: 29},
                 {name: "Enos", age: 34}];

次のようなオブジェクトがあるとします。

var nameInfo  = {name: "Moroni", age: 51};

変数 nameInfo を更新する簡単な方法はありますか。これらの間のキーは name 列です。行を検索し、削除して追加することでこれを行う方法があることは知っていますが、行を更新する方法でこれを行う方法が欲しいです。役立つかどうかはわかりませんが、underscore.js がロードされていることに注意してください。

ベストアンサー1

最も簡単な方法は、ループして一致する名前を持つものを見つけて、年齢を更新することです。

var newNameInfo  = {name: "Moroni", age: 51};
var name = newNameInfo.name;

for (var i = 0, l = nameInfo.length; i < l; i++) {
    if (nameInfo[i].name === name) {
        nameInfo[i].age = newNameInfo.age;
        break;
    }
}

JSFiddle の例

アンダースコアを使用すると、_。探すfor ループの代わりに次の操作を実行するメソッド:

var match = _.find(nameInfo, function(item) { return item.name === name })
if (match) {
    match.age = newNameInfo.age;
}

JSFiddle の例

おすすめ記事