Bootstrap

数组循环合并对象

一般我们合并对象使用Object.assign(json1,json2)

例子:

<script>
    let json={
        type:"Fruits",
        stock:"100"
    };
    let array = [{
        name: "桃子",
        E_name: "Peach",
        size: "20",
        color: "red"
    }, {
        name: "苹果",
        size: "apple",
        color: "red"
    }, {
        name: "橘子",
        E_name: "Orange",
        color: "Orange"
    }];
    let newArray=[]
    for (let index = 0; index < array.length; index++) {
        const element = array[index];
        let a=Object.assign(json,element)
        console.log(a)
        newArray.push(a)
    }
    console.log(newArray)
</script>

以为结果是这样的:

在这里插入图片描述

标题可惜事与愿违,结果是这样的:

在这里插入图片描述

标题为什么不行,因为Object.assign()数组合并是浅拷贝,

let newArray = []
    for (let index = 0; index < array.length; index++) {
        const element = array[index];
        for (let val in json) {
            element[val] = json[val]
        }
        console.log("循环输出:")
        console.log(element)
        newArray.push(element)
    }
    console.log("最后的结果:")
    console.log(newArray)

使用对象赋值就ok了

在这里插入图片描述

标题有兴趣的可以去百度下浅拷贝和深拷贝的区别,还是挺重要的知识点

悦读

道可道,非常道;名可名,非常名。 无名,天地之始,有名,万物之母。 故常无欲,以观其妙,常有欲,以观其徼。 此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。

;