簡體   English   中英

查找和更新數組中的對象

[英]Find and update an object in an array

我想從對象數組中獲取一個對象,然后對其進行更新。

var myObjs = [{ id: 1, name: "foo"}, { id: 2, name: "bar" }];

var myObjectToUpdate = _.findWhere(myObjs, { id: 2 });

myObjectToUpdate = { id: 2, name: "boop" };

myObjs[1] // { id: 2, name: "boop" }

當前,當我在第三行更新myObject時,它不會更新對象數組。 我假設它正在更新新變量而不是引用。

正確的方法是什么?

@ E_net4是正確的,您正在重新分配剛剛找到的對象。

如果您需要做的就是更新名稱,請嘗試以下操作:

var myObjs = [{ id: 1, name: "foo"}, { id: 2, name: "bar" }];

var myObjectToUpdate = _.findWhere(myObjs, { id: 2 });

myObjectToUpdate.name = "boop";

myObjs[1] // { id: 2, name: "boop" }

我想這就是你想要的。 您的代碼中存在誤解。 請閱讀我的代碼並進行比較。

希望能幫助到你!

function fn(arr, toReplace, newValue) {
  for(var x in arr) {
    for(var k in toReplace) {
      if(arr[x][k] == toReplace[k]) {
        arr[x] = newValue;
      }
    }
  }
  return arr;
};

var arr = [{ id: 1, name: "foo"}, { id: 2, name: "bar" }];
var newValue = {id: 2, name: "boop"};

arr = fn(arr, {id: 2}, newValue);
console.log(arr);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM