js或jquery实现json合并或者压缩

原本的json

[{
    "cslbArr": [{
        "cslb": "规格参数",
        "csArr": [{
            "key": "总质量",
            "val": "32250kg"
        }, {
            "key": "轴距",
            "val": "4600+1350mm"
        }, {
            "key": "长",
            "val": "10620mm"
        }, {
            "key": "宽",
            "val": "2500mm"
        }, {
            "key": "高",
            "val": "3880mm"
        }]
    }, {
        "cslb": "性能参数",
        "csArr": [{
            "key": "灭火剂装载量",
            "val": "13900kg"
        }, {
            "key": "工作高度",
            "val": "20m"
        }, {
            "key": "工作幅度",
            "val": "12m"
        }, {
            "key": "消防泵流量",
            "val": "50 L/s"
        }, {
            "key": "消防炮最大射程",
            "val": "≥60m"
        }, {
            "key": "工作斗载荷",
            "val": "/"
        }, {
            "key": "消防炮流量",
            "val": "50 L/s"
        }]
    }]
}, {
    "cslbArr": [{
        "cslb": "规格参数",
        "csArr": [{
            "key": "总质量",
            "val": "18100kg"
        }, {
            "key": "轴距",
            "val": "4500mm"
        }, {
            "key": "长",
            "val": "9670mm×"
        }, {
            "key": "宽",
            "val": "3880mm"
        }, {
            "key": "高",
            "val": "2500mm"
        }]
    }, {
        "cslb": "性能参数",
        "csArr": [{
            "key": "灭火剂装载量",
            "val": "/"
        }, {
            "key": "工作高度",
            "val": "32m"
        }, {
            "key": "工作幅度",
            "val": "20m"
        }, {
            "key": "消防泵流量",
            "val": "/"
        }, {
            "key": "消防炮最大射程",
            "val": "≥70m"
        }, {
            "key": "工作斗载荷",
            "val": "500kg"
        }, {
            "key": "消防炮流量",
            "val": "60L/s"
        }]
    }]
}, {
    "cslbArr": [{
        "cslb": "规格参数",
        "csArr": [{
            "key": "机长",
            "val": "16m"
        }, {
            "key": "机宽",
            "val": "11m"
        }, {
            "key": "翼展",
            "val": "4.9m"
        }]
    }, {
        "cslb": "性能参数",
        "csArr": [{
            "key": "最大起飞重量",
            "val": "4800kg"
        }, {
            "key": "载员",
            "val": "16人"
        }, {
            "key": "最大速度",
            "val": "180km/h"
        }, {
            "key": "飞行高度",
            "val": "0.6-1.2m"
        }, {
            "key": "适航海况",
            "val": "3级"
        }]
    }]
}]

想要的到的json结果

[{
    "cslb": "规格参数",
    "csArr": [{
        "key": "总质量",
        "val": ["32250kg", "18100kg", ""]
    }, {
        "key": "轴距",
        "val": ["4600+1350mm", "4500mm", ""]
    }, {
        "key": "长",
        "val": ["10620mm", "9670mm×", ""]
    }, {
        "key": "宽",
        "val": ["2500mm", "3880mm", ""]
    }, {
        "key": "高",
        "val": ["3880mm", "2500mm", ""]
    }, {
        "key": "机长",
        "val": ["", "", "16m"]
    }, {
        "key": "机宽",
        "val": ["", "", "11m"]
    }, {
        "key": "翼展",
        "val": ["", "", "4.9m"]
    }]
}, {
    "cslb": "性能参数",
    "csArr": [{
        "key": "灭火剂装载量",
        "val": ["13900kg", "/", ""]
    }, {
        "key": "工作高度",
        "val": ["20m", "32m", ""]
    }, {
        "key": "工作幅度",
        "val": ["12m", "20m", ""]
    }, {
        "key": "消防泵流量",
        "val": ["50 L/s", "/", ""]
    }, {
        "key": "消防炮最大射程",
        "val": ["≥60m", "≥70m", ""]
    }, {
        "key": "工作斗载荷",
        "val": ["/", "500kg", ""]
    }, {
        "key": "消防炮流量",
        "val": ["50 L/s", "60L/s", ""]
    }, {
        "key": "最大起飞重量",
        "val": ["", "", "4800kg"]
    }, {
        "key": "载员",
        "val": ["", "", "16人"]
    }, {
        "key": "最大速度",
        "val": ["", "", "180km/h"]
    }, {
        "key": "飞行高度",
        "val": ["", "", "0.6-1.2m"]
    }, {
        "key": "适航海况",
        "val": ["", "", "3级"]
    }]
}]
var arr = [{
    "cslbArr": [{
        "cslb": "规格参数",
        "csArr": [{
            "key": "总质量",
            "val": "32250kg"
        }, {
            "key": "轴距",
            "val": "4600+1350mm"
        }, {
            "key": "长",
            "val": "10620mm"
        }, {
            "key": "宽",
            "val": "2500mm"
        }, {
            "key": "高",
            "val": "3880mm"
        }]
    }, {
        "cslb": "性能参数",
        "csArr": [{
            "key": "灭火剂装载量",
            "val": "13900kg"
        }, {
            "key": "工作高度",
            "val": "20m"
        }, {
            "key": "工作幅度",
            "val": "12m"
        }, {
            "key": "消防泵流量",
            "val": "50 L/s"
        }, {
            "key": "消防炮最大射程",
            "val": "≥60m"
        }, {
            "key": "工作斗载荷",
            "val": "/"
        }, {
            "key": "消防炮流量",
            "val": "50 L/s"
        }]
    }]
}, {
    "cslbArr": [{
        "cslb": "规格参数",
        "csArr": [{
            "key": "总质量",
            "val": "18100kg"
        }, {
            "key": "轴距",
            "val": "4500mm"
        }, {
            "key": "长",
            "val": "9670mm×"
        }, {
            "key": "宽",
            "val": "3880mm"
        }, {
            "key": "高",
            "val": "2500mm"
        }]
    }, {
        "cslb": "性能参数",
        "csArr": [{
            "key": "灭火剂装载量",
            "val": "/"
        }, {
            "key": "工作高度",
            "val": "32m"
        }, {
            "key": "工作幅度",
            "val": "20m"
        }, {
            "key": "消防泵流量",
            "val": "/"
        }, {
            "key": "消防炮最大射程",
            "val": "≥70m"
        }, {
            "key": "工作斗载荷",
            "val": "500kg"
        }, {
            "key": "消防炮流量",
            "val": "60L/s"
        }]
    }]
}, {
    "cslbArr": [{
        "cslb": "规格参数",
        "csArr": [{
            "key": "机长",
            "val": "16m"
        }, {
            "key": "机宽",
            "val": "11m"
        }, {
            "key": "翼展",
            "val": "4.9m"
        }]
    }, {
        "cslb": "性能参数",
        "csArr": [{
            "key": "最大起飞重量",
            "val": "4800kg"
        }, {
            "key": "载员",
            "val": "16人"
        }, {
            "key": "最大速度",
            "val": "180km/h"
        }, {
            "key": "飞行高度",
            "val": "0.6-1.2m"
        }, {
            "key": "适航海况",
            "val": "3级"
        }]
    }]
}];

function isInArr(arr, item, key) {
    var sameItem;
    var isIn = arr.some(function (value) {
        if (value[key] == item[key]) {
            sameItem = value;
            return true;
        }
    });
    return [isIn, sameItem];
}

function rebuildArr(arr) {
    var newArr = [];
    arr.forEach((item1) => {
        item1["cslbArr"].forEach((item2) => {
            var [isIn1, sameItem] = isInArr(newArr, item2, "cslb");
            if (isIn1) {
                item2["csArr"].forEach((item3) => {
                    var [isIn2, subItem] = isInArr(sameItem["csArr"], item3, "key");
                    if (isIn2) {
                        subItem["val"].push(item3["val"]);
                    } else {
                        if (typeof item3["val"] == "string") {
                            item3["val"] = [item3["val"]];
                        }
                        sameItem["csArr"].push(item3);
                    }
                });
            } else {
                item2["csArr"].forEach((value) => {
                    if (typeof value["val"] == "string") {
                        value["val"] = [value["val"]];
                    }
                });
                newArr.push(item2);
            }
        });
    });
    return newArr;
}


var newArr = rebuildArr(arr);
console.log(JSON.stringify(newArr));

            var arr=[{
                    "cslbArr": [{
                        "cslb": "规格参数",
                        "csArr": [{
                            "key": "总质量",
                            "val": "32250kg"
                        }, {
                            "key": "轴距",
                            "val": "4600+1350mm"
                        }, {
                            "key": "长",
                            "val": "10620mm"
                        }, {
                            "key": "宽",
                            "val": "2500mm"
                        }, {
                            "key": "高",
                            "val": "3880mm"
                        }]
                    }, {
                        "cslb": "性能参数",
                        "csArr": [{
                            "key": "灭火剂装载量",
                            "val": "13900kg"
                        }, {
                            "key": "工作高度",
                            "val": "20m"
                        }, {
                            "key": "工作幅度",
                            "val": "12m"
                        }, {
                            "key": "消防泵流量",
                            "val": "50 L/s"
                        }, {
                            "key": "消防炮最大射程",
                            "val": "≥60m"
                        }, {
                            "key": "工作斗载荷",
                            "val": "/"
                        }, {
                            "key": "消防炮流量",
                            "val": "50 L/s"
                        }]
                    }]
                }, {
                    "cslbArr": [{
                        "cslb": "规格参数",
                        "csArr": [{
                            "key": "总质量",
                            "val": "18100kg"
                        }, {
                            "key": "轴距",
                            "val": "4500mm"
                        }, {
                            "key": "长",
                            "val": "9670mm×"
                        }, {
                            "key": "宽",
                            "val": "3880mm"
                        }, {
                            "key": "高",
                            "val": "2500mm"
                        }]
                    }, {
                        "cslb": "性能参数",
                        "csArr": [{
                            "key": "灭火剂装载量",
                            "val": "/"
                        }, {
                            "key": "工作高度",
                            "val": "32m"
                        }, {
                            "key": "工作幅度",
                            "val": "20m"
                        }, {
                            "key": "消防泵流量",
                            "val": "/"
                        }, {
                            "key": "消防炮最大射程",
                            "val": "≥70m"
                        }, {
                            "key": "工作斗载荷",
                            "val": "500kg"
                        }, {
                            "key": "消防炮流量",
                            "val": "60L/s"
                        }]
                    }]
                }, {
                    "cslbArr": [{
                        "cslb": "规格参数",
                        "csArr": [{
                            "key": "机长",
                            "val": "16m"
                        }, {
                            "key": "机宽",
                            "val": "11m"
                        }, {
                            "key": "翼展",
                            "val": "4.9m"
                        }]
                    }, {
                        "cslb": "性能参数",
                        "csArr": [{
                            "key": "最大起飞重量",
                            "val": "4800kg"
                        }, {
                            "key": "载员",
                            "val": "16人"
                        }, {
                            "key": "最大速度",
                            "val": "180km/h"
                        }, {
                            "key": "飞行高度",
                            "val": "0.6-1.2m"
                        }, {
                            "key": "适航海况",
                            "val": "3级"
                        }]
                    }]
                }];

function test(arr) {
    var newarray=[{
            "cslb": "规格参数",
            "csArr": []}, {
            "cslb": "性能参数",
            "csArr": []}];

    arr.forEach(function(value,keyindex){
            newarray.forEach(function(valueIndex,key){
                if(valueIndex.cslb==value.cslbArr[key].cslb){
                        valueIndex.csArr.push(value.cslbArr[key].csArr);
                }       
            })          
    })
    return newarray;
}


console.log(test(arr));
//然后数组合并就行

问题已经用其他方式解决。多谢大家了。