将两个 JSON 对象与数组对象连接起来

joining two json object with array object in it

本文关键字:对象 数组 对象连接 起来 JSON 两个      更新时间:2023-09-26

响应存储在data1中

ad.display(sha.c function(data1) {
                dataFirst(data1);
            });

响应存储在数据中2

  ad.display(sha.c, function(data2) {
                dataSecond(data2);
                superDisplay(concatData);
            });
function dataFirst(data1){
    return data1;
}
function dataSecond(data2){
    return data2;
}
function concatData(data1,data2){
    return dataFirst.concat(dataSecond);
}

响应对象 data1 和 data2 是 json,看起来像

        data1={errors: null, rowdata: Array[4], state: Object}
        data2={errors: null, rowdata: Array[9], state: Object}

我想合并它们并创建一个 JSON 对象。生成的 json 应具有来自 data2 的所有值和来自 data1 的值,这些值在 data2 中不存在。

所以 concatData json 应该是这样的

concatData={errors: null, rowdata: Array[13], state: Object}

这是我没有得到的预期结果

行数据应包含来自 data1 和数据 2 的值

JavaScript 的回答最受欢迎

我从这里获取了示例代码并对其进行了修改以合并数组。此处提供了小提琴(打开检查器以查看日志)。

var extend = function () {
    var extended = {}, deep = false, i = 0, length = arguments.length;
    // Check if a deep merge
    if ( Object.prototype.toString.call( arguments[0] ) === '[object Boolean]' ) {
        deep = arguments[0];
        i++;
    }
    // Merge the object into the extended object
    var merge = function (obj) {
        for ( var prop in obj ) {
            if ( Object.prototype.hasOwnProperty.call( obj, prop ) ) {
                // If deep merge and property is an object, merge properties
                if ( deep && Object.prototype.toString.call(obj[prop]) === '[object Object]' ) {
                    extended[prop] = extend( true, extended[prop], obj[prop] );
                } else if (Object.prototype.toString.call(obj[prop]) === '[object Array]') {
                    if (extended[prop] && Object.prototype.toString.call(extended[prop]) === '[object Array]') {
                    extended[prop] = extended[prop].concat(obj[prop]);
                  } else if (!extended[prop]) {
                    extended[prop] = obj[prop];
                  }
                } else {
                    extended[prop] = obj[prop];
                }
            }
        }
    };
    // Loop through each object and conduct a merge
    for ( ; i < length; i++ ) {
        var obj = arguments[i];
        merge(obj);
    }
    return extended;
};
var item1 = { name: 'Frank', age: 42, pets: ['cat', 'dog']};
var item2 = { name: 'Jane', pets: ['fish']};
var item3 = extend(true, item1, item2);
window.console.log(item3);

它应该让你走上你想去的地方。就我个人而言,我觉得它需要更多的工作才能与jQuery的扩展相提并论。