gpt4 book ai didi

javascript - 我试图在向该对象添加新属性之前将对象推送到数组,但它直接更新数组

转载 作者:太空宇宙 更新时间:2023-11-04 01:24:30 25 4
gpt4 key购买 nike

我如何摆脱这种行为,因为我需要更新的对象只是将其显示给用户并仅保存原始对象

作为响应发送的“文章”具有类别属性,在我看来,它们不仅应该在其上方新初始化的“数据”变量(不保存到文章数组中)

import articles from "../models/article" // articles empty array
import categories from "../models/category" // categories empty array

export default {
create(req, res) {
const value = req.value // object
const category = req.category // object
category.forEach(obj => {
categories.push({ category: obj, articleId: value.id })
})
// console.log(categories)
const bro = articles.push(value)
console.log(articles)
if (bro) {
// const data = value
value.category = category
console.log(articles)

const data = value
res.status(201).json({
status: 201,
message: 'article created successfully',
articles
})
}

},}

最佳答案

JavaScript 中的对象(包括数组)只是指针。当您将 value 推送到 articles 数组时,您只是推送了一个指向原始对象的指针,因此当您修改原始对象时,该修改将应用于两个地方。

我相信你想做的是替换

            // const data = value
value.category = category
console.log(articles)

const data = value

            const data = Object.assign({}, value, { category })

这将创建一个完全独立的对象,其中包含之前的所有属性值,但还会添加类别。

注意:ES6 解构允许您进一步简化它

            const data = { ...value, category }

关于javascript - 我试图在向该对象添加新属性之前将对象推送到数组,但它直接更新数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58068021/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com