更新 ForEach 中的 javascript 对象?

Updating javascript object in a ForEach?

我有一个像这样的名为 objectX 的对象

{
    "test": [
      {
        "id": "de6b4d1c-6e04-46a1-908b-9ed5c78e1boc", 
      }, 
      {
        "id": "de6b4d1c-6e04-46a1-908b-9ed5c78e1boc", 
      }, 
      {
        "id": "de6b4d1c-6e04-46a1-908b-9ed5c78e1boc", 
      }, 
      {
        "id": "de6b4d1c-6e04-46a1-908b-9ed5c78e1boc", 
      }, 
      {
        "id": "de6b4d1c-6e04-46a1-908b-9ed5c78e1boc", 
      }, 
      {
        "id": "de6b4d1c-6e04-46a1-908b-9ed5c78e1boc", 
      }
    ], 
}

我想更新测试数组中所有对象的 ID。

为此,我正在做

    objectX.test.forEach((obj) => {
      obj.id = newId
    })

但是对于我的 forEach,我有这个

Error: "[vuex] do not mutate vuex store state outside mutation handlers."

有谁知道我怎样才能更新我的 ID 而不会出现这样的错误?

您不能在 forEach 内部进行更新,因为您更新的是对象的副本,而不是对象本身。 您可以 map 遍历您的数组并将更新后的数组 return 传递给另一个变量:

const objectX = {
  test: [{ name: 'a', id: 4 }, { name: 'b', id: 2 } ],
 };
const newId = 1;
objectX.test = objectX.test.map((obj) => {
  return {
     ...obj,
     id: newId,
    }
 });
 console.log(objectX.test);