我有这个问题,我无法理解为什么。在for循环中,我尝试为一个对象数组中的每个对象分配一个新的键值对,来自mongoose查询的响应。例如
obj = {
value1: "someValue",
value2: [],
value3: {}
value4: {
id: "someId"
}
}
如果我尝试做一个obj.value4.newKey =“newValue”似乎没有任何事情发生,但问题是当我做的时候
console.log(obj.value4.newKey) // prints "newValue"
但是当我这样做的时候
console.log(obj)
要么
console.log(obj.value4)
之前添加的新密钥似乎不存在
我真的不知道为什么,但我找到了某种解决方法,这是有效的(继续第一个例子)
res = JSON.parse(JSON.stringify(obj.value4));
res.newKey = "newValue";
现在我做
console.log(res)
我明白了
{
id: "someId",
newKey = "newValue"
}
有任何想法吗 ?
您的代码中有错误:
obj = {
value1: "someValue",
value2: [],
value3: {} // , is missing
value4: {
id: "someId"
}
}
而你期待的是为我工作See it in Action。
你的代码完美无缺(在修复了丢失的逗号错误之后) - 在你的控制台打开的情况下尝试它,你会看到newKey
中的value4
值正如你所期望的那样添加:
obj = {
value1: "someValue",
value2: [],
value3: {},
value4: {
id: "someId"
}
};
obj.value4.newKey = "newValue";
console.log(obj);
任何错误都不是您发布的代码的问题,而是周围的代码。你能发布一个完整的,可执行的失败示例吗?