簡體   English   中英

我試圖在向該 object 添加新屬性之前將 object 推送到數組,但它直接更新數組

[英]i am trying to push an object to an array before adding a new property to that object , but it directly updates the array

我該如何解決這種行為,因為我只需要更新的 object 就可以將其顯示給用戶並且只保存原始的

作為響應發送的“文章”具有類別屬性,在我看來,它們不應該只是它上面的新初始化“數據”變量應該(不保存到文章數組)

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數組時,您只是推送指向原始 object 的指針,因此當您修改原始 object 時,該修改適用於兩個地方。

我相信你想要做的是更換

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

            const data = value

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

這將創建一個完全獨立的 object,其中包含來自 value 的所有先前屬性,而且還添加了類別。

注意:ES6 解構允許您進一步簡化它,就像

            const data = { ...value, category }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM