使用 localstorage 更改嵌套对象的值

Change a value from a nested object using localstorage

我有这段代码在本地存储中设置 obj 值。

const obj = {
  name: "Bill",
  meta: {
    age: 18
  }
};
const data = localStorage.setItem('user', JSON.stringify(obj));

现在我想更改本地存储中的 age 键: localStorage.setItem('user', JSON.stringify({ ...data, ...data.meta.age= 15 } }));,但它不起作用。
如何更改上面的值并查看localstorage的变化?

假设你有 data,问题是 ...data.meta.age = 15 是一个语法错误。您不在对象字面量中使用 =,并且尝试传播 age 属性(这是一个数字)没有任何意义。相反:

const newData = {
    ...data,
    meta: {
        ...data.meta,
        age: 15,
    },
};
localStorage.setItem("user", JSON.stringify(newData));

请注意我们必须如何创建一个新的最外层对象以及 meta 的新对象。

实例:

const data = {
    name: "Bill",
    meta: {
        occupation: "Programmer", // Added so we see it get copied
        age: 18,
    },
};
const newData = {
    ...data,
    meta: {
        ...data.meta,
        age: 15,
    },
};
console.log(newData);