You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JS数组无法正确插入对象,存储用户warn字段出现0:1错误如何修复?

问题根源

JavaScript中数组的push()方法返回值是执行push操作后数组的新长度,而不是修改后的数组本身。你代码中把push返回的长度值(也就是你场景里的1)赋值给了newWarn,再把这个数值覆盖到newUser[0].warn字段,自然就得到了非预期的存储结果。

修复方案

因为push()是直接修改原数组的变异方法,你完全不需要额外赋值给新变量,直接操作原warn数组即可。
修改后的代码如下:

const newMsg = {
    title: msg[0].title,
    body: msg[0].body,
    author: msg[0].author,
    postid: msg[0].postid
}
// 直接往原warn数组中push新内容,push会直接修改原数组,不需要接收返回值
newUser[0].warn.push(newMsg)
console.dir(newMsg)
newUser[0].warned = true
await newUser[0].save()

如果你需要遵循不可变更新的规范(比如部分数据库更新要求不修改原对象),也可以用数组展开运算符生成新数组赋值:

// 用展开运算符创建包含原有内容+新消息的新数组
newUser[0].warn = [...newUser[0].warn, newMsg]

内容的提问来源于stack exchange,提问作者Liam Sholts

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 16:24:04