js 合并数组并在指定位置插入对象

例如数组

    var testNew = {

        "name": "数据设置11",

        "key": "data-setting",

        "anchored": false,

        configUpdateMerge: '',

        "items": [{

                "label": "展示多sheet",

                "key": "showMultiSheet",

                value: '哈哈哈哈'

            },

            {

                "key": "can-export-csv",

                "label": "允许导出CSV数据",

                value: '一樣一樣'

            },

            {

                "key": "max-data-export",

                "label": "最大数据下载量",

            },

            {

                "key": "export-fields",

                "label": "CSV 导出字段",

                value: ''

 

            },

            {

                "label": "指标名称",

                "key": "1_indicator-label",

                value: ''

 

            },

        ]

    }

 

数组:

   var testold = {

        "name": "数据设置",

        "key": "data-setting",

        "anchored": true,

        configUpdateMerge: true,

        "items": [{

                "label": "展示多sheet",

                "key": "showMultiSheet",

                value: '4r5'

            },

            {

                "key": "can-export-csv",

                "label": "允许导出CSV数据111",

                value: '44'

 

            },

            {

                "key": "export-fields",

                "label": "CSV 导出字段",

                "options": [

                    [444]

                ],

                "multiSheets": true,

                "value": [

                    [8888]

                ],

 

            },

            {

                "label": "指标名称",

                "key": "1_indicator-label",

                value: '55'

 

            },

            {

                "label": "指标名称",

                "key": "2_indicator-label",

            },

            {

                "label": "指标名称",

                "key": "3_indicator-label",

                value: '55'

 

            },

            {

                "label": "指标名称",

                "key": "4_indicator-label",

            },

            {

                "label": "指标名称",

                "key": "5_indicator-label",

                value: '55'

 

            },

            {

                "label": "指标名称",

                "key": "6_indicator-label",

            },

        ]

    }

怎么根据合并数组后根据key相同保留后面数组的数据,旧数组没有的key要在相应的位置插进去再返回?

一头雾水,求求大神

 以新对象为基础

代码如下:{如果对你有帮助,可以给我个采纳吗,谢谢!! 点击我这个回答右上方的【采纳】按钮}。

    var testNew = {
        "name": "数据设置11",
        "key": "data-setting",
        "anchored": false,
        configUpdateMerge: '',
        "items": [{
                "label": "展示多sheet",
                "key": "showMultiSheet",
                value: '哈哈哈哈'
            },
            {
                "key": "can-export-csv",
                "label": "允许导出CSV数据",
                value: '一樣一樣'
            },
            {
                "key": "max-data-export",
                "label": "最大数据下载量",
            },
            {
                "key": "export-fields",
                "label": "CSV 导出字段",
                value: ''
            },
            {
                "label": "指标名称",
                "key": "1_indicator-label",
                value: ''
            },
        ]
    }
   var testold = {
        "name": "数据设置",
        "key": "data-setting",
        "anchored": true,
        configUpdateMerge: true,
        "items": [{
                "label": "展示多sheet",
                "key": "showMultiSheet",
                value: '4r5'
            },
            {
                "key": "can-export-csv",
                "label": "允许导出CSV数据111",
                value: '44'
            },
            {
                "key": "export-fields",
                "label": "CSV 导出字段",
                "options": [
                    [444]
                ],
                "multiSheets": true,
                "value": [
                    [8888]
                ],
            },
            {
                "label": "指标名称",
                "key": "1_indicator-label",
                value: '55'
            },
            {
                "label": "指标名称",
                "key": "2_indicator-label",
            },
            {
                "label": "指标名称",
                "key": "3_indicator-label",
                value: '55'
            },
            {
                "label": "指标名称",
                "key": "4_indicator-label",
            },
            {
                "label": "指标名称",
                "key": "5_indicator-label",
                value: '55'
            },
            {
                "label": "指标名称",
                "key": "6_indicator-label",
            },
        ]
    }
testold.items.forEach(function(v, i){
	var t = testold.items.findIndex(u=>u.key==v.key);
	if (t != -1) {
		testNew.items[t] = v;
	} else {
		testNew.items.push(v);
	}
});
console.log(testNew);

 

循环遍历判断key是否存在,如果不存在就push进去。

是要怎么合并?

    var testNew = {
        "name": "数据设置11",
        "key": "data-setting",
        "anchored": false,
        configUpdateMerge: '',
        "items": [{
                "label": "展示多sheet",
                "key": "showMultiSheet",
                value: '哈哈哈哈'
            },
            {
                "key": "can-export-csv",
                "label": "允许导出CSV数据",
                value: '一樣一樣'
            },
            {
                "key": "max-data-export",
                "label": "最大数据下载量",
            },
            {
                "key": "export-fields",
                "label": "CSV 导出字段",
                value: ''
            },
            {
                "label": "指标名称",
                "key": "1_indicator-label",
                value: ''
            },
        ]
    }

   var testold = {
        "name": "数据设置",
        "key": "data-setting",
        "anchored": true,
        configUpdateMerge: true,
        "items": [{
                "label": "展示多sheet",
                "key": "showMultiSheet",
                value: '4r5'
            },
            {
                "key": "can-export-csv",
                "label": "允许导出CSV数据111",
                value: '44'
            },
            {
                "key": "export-fields",
                "label": "CSV 导出字段",
                "options": [
                    [444]
                ],
                "multiSheets": true,
                "value": [
                    [8888]
                ],
            },
            {
                "label": "指标名称",
                "key": "1_indicator-label",
                value: '55'
            },
            {
                "label": "指标名称",
                "key": "2_indicator-label",
            },
            {
                "label": "指标名称",
                "key": "3_indicator-label",
                value: '55'
            },
            {
                "label": "指标名称",
                "key": "4_indicator-label",
            },
            {
                "label": "指标名称",
                "key": "5_indicator-label",
                value: '55'
            },
            {
                "label": "指标名称",
                "key": "6_indicator-label",
            },
        ]
    }

testNew.items.forEach(function(v, i){
	var t = testold.items.some(u=>u.key==v.key);
	if (!t) {
		testold.items.splice(i, 0, v);
	}
});
console.log(testold);

 

您的问题已经有小伙伴解答了,请点击【采纳】按钮,采纳帮您提供解决思路的答案,给回答的人一些鼓励哦~~

ps:开通问答VIP,享受5次/月 有问必答服务,了解详情↓↓↓

【电脑端】戳>>>  https://vip.csdn.net/askvip?utm_source=1146287632
【APP 】  戳>>>  https://mall.csdn.net/item/52471?utm_source=1146287632