需要用 3 个不同数组中的嵌套数据形成一个数组对象

Need to form an array object with nested data out of 3 different arrays

需要用 3 个不同的数组 records、records1 和 records2 组成一个数组对象,这样它就必须看起来像一个嵌套的树结构 以下是我将 JSON 数据绑定到数组的代码。想将其作为一个单独的数组,以便可以将其传递到嵌套子网格的 JQGRID 中。

                if (contracts !== undefined && contracts !== null && contracts.length > 0) {
                                                var a= [] ;

                                                //============================================================
                                                // build records of Contracts
                                                //============================================================
                                                $.each(contracts, function (index, contract) {
                                                    a[index] = {};
                                                    a[index]['id'] = contract.ID;
                                                    a[index]['description'] = contract.Description;





                                                    } 

                                                    $.each(contract.Contractabc, function (index2, contract1) {

                                                        a[index2] = {};
                                                        a[index2]['contractlineid'] = contractLine.ID;
                                                        a[index2]['itemname'] = contractLine.ItemName;

                                                        $.each(Contractabc.Prod, function (index3, product) {

                                                            a[index3] = {};
                                                            a[index3]['productid'] = product.ID;
                                                            a[index3]['name'] = product.Name;
                                                            a[index3]['description'] = product.Description;

                                                        }); 
                                                    });  

                                                 }); 


                } else {
                    $('#grid').html('No records exists.');
                }

你的问题是当你只需要一个时你使用了 3 个不同的数组,试试这个

var $gridName = $('#account-contract-grid');
if (contracts !== undefined && contracts !== null && contracts.length > 0) {
    var records = [];
    //============================================================
    // build records of Contracts
    //============================================================
    $.each(contracts, function (index, contract) {
        var _newContract = {};
        _newContract['contractid'] = contract.ID;
        _newContract['description'] = contract.Description;
        _newContract['status'] = contract.Status.Value;
        _newContract['classification'] = contract.Classification;
        _newContract['startdate'] = PD.Utilities.FormatDateDDMMMYYYY(contract.DateStart);
        _newContract['enddate'] = PD.Utilities.FormatDateDDMMMYYYY(contract.DateEnd);
        _newContract['canceldate'] = PD.Utilities.FormatDateDDMMMYYYY(contract.DateCancel);

        _newContract['subgrid'] = [];

        if (contract.Status.ID == '1' || contract.Status.ID == '2') { //1=open, 2=suspended
            _isAllowNewSubscription = true
        }
        //============================================================
        // build records of Contract Lines
        //============================================================
        $.each(contract.ContractLines, function (index2, contractLine) {

            var _newContractLine = {};
            _newContractLine['contractlineid'] = contractLine.ID;
            _newContractLine['itemname'] = contractLine.ItemName;
            _newContractLine['startdate'] = PD.Utilities.FormatDateDDMMMYYYY(contractLine.DateStart);
            _newContractLine['enddate'] = PD.Utilities.FormatDateDDMMMYYYY(contractLine.DateEnd);
            _newContractLine['canceldate'] = PD.Utilities.FormatDateDDMMMYYYY(contractLine.DateCancel);
            _newContractLine['vendorname'] = contractLine.Vendor.Name;
            _newContractLine['description'] = contractLine.Description;
            _newContractLine['isshipped'] = contractLine.IsShipped;

            _newContractLine['subgrid'] = [];
            //============================================================
            // build records of Products
            //============================================================
            $.each(contractLine.Products, function (index3, product) {

                var _newProduct = {};
                _newProduct['productid'] = product.ID;
                _newProduct['name'] = product.Name;
                _newProduct['description'] = product.Description;

                _newContractLine['subgrid'].push(_newProduct);

            }); //  records2 

            _newContract['subgrid'].push(_newContractLine);
        });  //  records1
        records.push(_newContract);
    }); //  records

    $gridName.setGridWidth($('#account-page').width() - 15, true);
} else {
    $('#account-contract-content').html('No records exists.');
}

最后,在变量 records 中你将拥有所有数据,我认为它已经足够接近你想要的变量 mainGrid 的数据了。我还没有测试自己,因为我没有 contracts 的示例数据。让我知道它是否适合你。