Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 循环遍历对象并创建数组,然后根据id进行组合_Javascript_Arrays_Json - Fatal编程技术网

Javascript 循环遍历对象并创建数组,然后根据id进行组合

Javascript 循环遍历对象并创建数组,然后根据id进行组合,javascript,arrays,json,Javascript,Arrays,Json,我在尝试构建数组时遇到问题,然后根据id组合并输出多个对象 这就是问题所在(我希望这是有意义的): 我在多个对象之间循环,然后根据对象类型的值创建一个数组。然后,我将该数组构建到对象中。完成后,我需要遍历所有对象并合并具有相同id的任何对象 这是它最初的外观示例: [{ "id": "755", "entities": ["14394551"], "accountID":

我在尝试构建数组时遇到问题,然后根据id组合并输出多个对象

这就是问题所在(我希望这是有意义的):

我在多个对象之间循环,然后根据对象类型的值创建一个数组。然后,我将该数组构建到对象中。完成后,我需要遍历所有对象并合并具有相同id的任何对象

这是它最初的外观示例:

[{
    "id": "755",
    "entities": ["14394551"],
    "accountID": "755",
    "accountName": "122060 Test7",
    "amount": 43,
    "subsidiary": "2",
    "currency": "1",
    "webPaymentMethod": "Test7",
    "webPaymentMethodID": "14",
    "type": "CustDep",
    "salesOrderId": ["14394550"],
    "memo": ["MAINGB588328"],
    "exchangerate": 1
}, {
    "id": "755",
    "entities": ["14394553"],
    "accountID": "755",
    "accountName": "122060 Test7",
    "amount": 28,
    "subsidiary": "2",
    "currency": "1",
    "webPaymentMethod": "Test7",
    "webPaymentMethodID": "14",
    "type": "CustDep",
    "salesOrderId": ["14394552"],
    "memo": ["MAINGB588333"],
    "exchangerate": 1
},{
    "id": "758",
    "entities": ["14439896"],
    "accountID": "758",
    "accountName": "122070 Test5",
    "amount": 38,
    "subsidiary": "2",
    "currency": "1",
    "webPaymentMethod": "Test5",
    "webPaymentMethodID": "12",
    "type": "CustDep",
    "salesOrderId": ["14439895"],
    "memo": ["MICGB2454"],
    "exchangerate": 1
}, {
    "id": "758",
    "entities": ["14434400"],
    "accountID": "758",
    "accountName": "122070 Test5",
    "amount": 18,
    "subsidiary": "2",
    "currency": "1",
    "webPaymentMethod": "Test5",
    "webPaymentMethodID": "12",
    "type": "CustDep",
    "salesOrderId": ["14434399"],
    "memo": ["MICGB2453"],
    "exchangerate": 1
}, {
    "id": "758",
    "entities": ["14430895"],
    "accountID": "758",
    "accountName": "122070 Test5",
    "amount": 63,
    "subsidiary": "2",
    "currency": "1",
    "webPaymentMethod": "Test5",
    "webPaymentMethodID": "12",
    "type": "Dep",
    "salesOrderId": ["14430894"],
    "memo": ["MICGB2452"],
    "exchangerate": 1
}, {
    "id": "762",
    "entities": ["14350538"],
    "accountID": "762",
    "accountName": "122100 TEST1",
    "amount": 45,
    "subsidiary": "2",
    "currency": "1",
    "webPaymentMethod": "TEST1",
    "webPaymentMethodID": "13",
    "type": "CustDep",
    "salesOrderId": ["14350537"],
    "memo": ["MAINGB586991"],
    "exchangerate": 1
}, {
    "id": "760",
    "entities": ["14350538"],
    "accountID": "760",
    "accountName": "122100 TEST2",
    "amount": 49,
    "subsidiary": "2",
    "currency": "1",
    "webPaymentMethod": "TEST2",
    "webPaymentMethodID": "13",
    "type": "CustDep",
    "salesOrderId": ["14321538"],
    "memo": ["MAINGB452756"],
    "exchangerate": 1
}]
然后,这是在创建数组之后->根据类型而定

[
    {
    "id": "755",
    "accountID": "755",
    "accountName": "122060 Test7",
    "subsidiary": "2",
    "currency": "1",
    "type": "CustDep",
    "exchangerate": 1,
    "customerDeposit": [{
        "entities": ["14394551"],
        "amount": 43,
        "webPaymentMethod": "Test7",
        "webPaymentMethodID": "14",
        "salesOrderId": ["14394550"],
        "memo": ["MAINGB588328"]
    }],
    "deposit": []
}, {
    "id": "755",
    "accountID": "755",
    "accountName": "122060 Test7",
    "subsidiary": "2",
    "currency": "1",
    "type": "CustDep",
    "exchangerate": 1,
    "customerDeposit": [{
        "entities": ["14394553"],
        "amount": 28,
        "webPaymentMethod": "Test7",
        "webPaymentMethodID": "14",
        "salesOrderId": ["14394552"],
        "memo": ["MAINGB588333"],
    }],
    "deposit": []
},{
    "id": "758",
    "entities": ["14439896"],
    "accountID": "758",
    "accountName": "122070 Test5",
    "subsidiary": "2",
    "currency": "1",
    "type": "CustDep",
    "exchangerate": 1,
    "customerDeposit": [{
        "entities": ["14439896"],    
        "amount": 38,
        "webPaymentMethod": "Test5",
        "webPaymentMethodID": "12",
        "salesOrderId": ["14439895"],
        "memo": ["MICGB2454"]
    }],
    "deposit": []
}, {
    "id": "758",
    "accountID": "758",
    "accountName": "122070 Test5",
    "subsidiary": "2",
    "currency": "1",
    "type": "CustDep",
    "exchangerate": 1,
    "customerDeposit" : [{
        "entities": ["14434400"],
        "amount": 18,
        "webPaymentMethod": "Test5",
        "webPaymentMethodID": "12",
        "salesOrderId": ["14434399"],
        "memo": ["MICGB2453"]
    }],
    "deposit": []
}, {
    "id": "758",
    "accountID": "758",
    "accountName": "122070 Test5",
    "subsidiary": "2",
    "currency": "1",
    "type": "Dep",
    "exchangerate": 1,
    "customerDeposit": [],
    "deposit": [{
        "entities": ["14430895"],
        "amount": 63,
        "memo": ["MICGB2452"],
    }]
}, {
    "id": "762",
    "accountID": "762",
    "accountName": "122100 TEST1",
    "subsidiary": "2",
    "currency": "1",
    "type": "CustDep",
    "exchangerate": 1,
    "customerDeposit": [
        {
            "entities": ["14350538"],
            "amount": 45,
            "webPaymentMethod": "TEST1",
            "webPaymentMethodID": "13",
            "salesOrderId": ["14350537"],
            "memo": ["MAINGB586991"],
        }
    ],
    "deposit": []
}, {
    "id": "760",
    "accountID": "760",
    "accountName": "122100 TEST2",
    "subsidiary": "2",
    "currency": "1",
    "type": "CustDep",
    "exchangerate": 1,
    "customerDeposit": [{
        "entities": ["14350538"],
        "amount": 49,
        "webPaymentMethod": "TEST2",
        "webPaymentMethodID": "13",
        "salesOrderId": ["14321538"],
        "memo": ["MAINGB452756"]
    }],
    "deposit": []
}]
那么这就是我想要的最终输出——所有相同的id对象都有customerDeposit/deposit组合

[
    {
    "id": "755",
    "accountID": "755",
    "accountName": "122060 Test7",
    "subsidiary": "2",
    "currency": "1",
    "type": "CustDep",
    "exchangerate": 1,
    "customerDeposit": [{
        "entities": ["14394551"],
        "amount": 43,
        "webPaymentMethod": "Test7",
        "webPaymentMethodID": "14",
        "salesOrderId": ["14394550"],
        "memo": ["MAINGB588328"]
    }, {
        "entities": ["14394553"],
        "amount": 28,
        "webPaymentMethod": "Test7",
        "webPaymentMethodID": "14",
        "salesOrderId": ["14394552"],
        "memo": ["MAINGB588333"],
    }],
    "deposit": []
}, {
    "id": "758",
    "entities": ["14439896"],
    "accountID": "758",
    "accountName": "122070 Test5",
    "subsidiary": "2",
    "currency": "1",
    "type": "CustDep",
    "exchangerate": 1,
    "customerDeposit": [{
        "entities": ["14439896"],    
        "amount": 38,
        "webPaymentMethod": "Test5",
        "webPaymentMethodID": "12",
        "salesOrderId": ["14439895"],
        "memo": ["MICGB2454"]
    }, {
        "entities": ["14434400"],
        "amount": 18,
        "webPaymentMethod": "Test5",
        "webPaymentMethodID": "12",
        "salesOrderId": ["14434399"],
        "memo": ["MICGB2453"]
    }],
    "deposit": [{
        "entities": ["14430895"],
        "amount": 63,
        "memo": ["MICGB2452"],
    }]
}, {
    "id": "762",
    "accountID": "762",
    "accountName": "122100 TEST1",
    "subsidiary": "2",
    "currency": "1",
    "type": "CustDep",
    "exchangerate": 1,
    "customerDeposit": [
        {
            "entities": ["14350538"],
            "amount": 45,
            "webPaymentMethod": "TEST1",
            "webPaymentMethodID": "13",
            "salesOrderId": ["14350537"],
            "memo": ["MAINGB586991"],
        }
    ],
    "deposit": []
}, {
    "id": "760",
    "accountID": "760",
    "accountName": "122100 TEST2",
    "subsidiary": "2",
    "currency": "1",
    "type": "CustDep",
    "exchangerate": 1,
    "customerDeposit": [{
        "entities": ["14350538"],
        "amount": 49,
        "webPaymentMethod": "TEST2",
        "webPaymentMethodID": "13",
        "salesOrderId": ["14321538"],
        "memo": ["MAINGB452756"]
    }],
    "deposit": []
}]
这是我的当前代码,但它没有按照我的要求工作,因为它跳过了任何没有多个customerDeposit/deposit的ID,因为它没有进入
if(objForId)
语句

函数createDeposit(值){
存款={
实体:值。实体,
金额:value.amount,
备注:values.memo,
};
退还保证金;
}
函数createCustomerDeposit(值){
客户存款={
实体:值。实体,
金额:value.amount,
备注:values.memo,
webPaymentMethod:values.webPaymentMethod,
webPaymentMethodID:values.webPaymentMethodID,
salesOrderId:values.salesOrderId,
};
返回客户存储;
}
函数运行(){
常量传输数据=[{
“id”:“755”,
“实体”:[“14394551”],
“accountID”:“755”,
“accountName”:“122060测试7”,
“金额”:43,
“子公司”:“2”,
“货币”:“1”,
“webPaymentMethod”:“Test7”,
“webPaymentMethodID”:“14”,
“类型”:“CustDep”,
“salesOrderId”:[“14394550”],
“备忘录”:[“主要GB588328”],
“汇率”:1
}, {
“id”:“755”,
“实体”:[“14394553”],
“accountID”:“755”,
“accountName”:“122060测试7”,
“金额”:28,
“子公司”:“2”,
“货币”:“1”,
“webPaymentMethod”:“Test7”,
“webPaymentMethodID”:“14”,
“类型”:“CustDep”,
“salesOrderId”:[“14394552”],
“备忘录”:[“主要GB588333”],
“汇率”:1
},{
“id”:“758”,
“实体”:[“14439896”],
“accountID”:“758”,
“accountName”:“122070测试5”,
“金额”:38,
“子公司”:“2”,
“货币”:“1”,
“webPaymentMethod”:“Test5”,
“webPaymentMethodID”:“12”,
“类型”:“CustDep”,
“salesOrderId”:[“14439895”],
“备忘录”:[“MICGB2454”],
“汇率”:1
}, {
“id”:“758”,
“实体”:[“14434400”],
“accountID”:“758”,
“accountName”:“122070测试5”,
“金额”:18,
“子公司”:“2”,
“货币”:“1”,
“webPaymentMethod”:“Test5”,
“webPaymentMethodID”:“12”,
“类型”:“CustDep”,
“salesOrderId”:[“14434399”],
“备忘录”:[“MICGB2453”],
“汇率”:1
}, {
“id”:“758”,
“实体”:[“14430895”],
“accountID”:“758”,
“accountName”:“122070测试5”,
“金额”:63,
“子公司”:“2”,
“货币”:“1”,
“webPaymentMethod”:“Test5”,
“webPaymentMethodID”:“12”,
“类型”:“Dep”,
“salesOrderId”:[“14430894”],
“备忘录”:[“MICGB2452”],
“汇率”:1
}, {
“id”:“762”,
“实体”:[“14350538”],
“accountID”:“762”,
“accountName”:“122100测试1”,
“金额”:45,
“子公司”:“2”,
“货币”:“1”,
“webPaymentMethod”:“TEST1”,
“webPaymentMethodID”:“13”,
“类型”:“CustDep”,
“salesOrderId”:[“14350537”],
“备忘录”:[“主要GB586991”],
“汇率”:1
}, {
“id”:“760”,
“实体”:[“14350538”],
“accountID”:“760”,
“accountName”:“122100测试2”,
“金额”:49,
“子公司”:“2”,
“货币”:“1”,
“webPaymentMethod”:“TEST2”,
“webPaymentMethodID”:“13”,
“类型”:“CustDep”,
“salesOrderId”:[“1432538”],
“备忘录”:[“主要GB452756”],
“汇率”:1
}];
var customerDeposit=[];
var存款=[];
var res=transferData.reduce(函数(agg,obj){
var objForId=agg.filter(函数(idObj){
返回idObj.id==obj.id;
})[0];
if(objForId){
如果(obj.type=='CustDep'){
objForId.customerDeposit.push(createCustomerDeposit(obj));
}
如果(对象类型=='Dep'){
objForId.deposit.push(createDeposit(obj));
}
}否则{
总推力({
id:obj.id,
accountID:obj.accountID,
accountName:obj.accountName,
附属公司:obj.subsidiary,
货币:obj.currency,
兑换率,
客户存款,
押金
});
customerDeposit=[];
存款=[];
}
返回agg;
}, []);
控制台日志(res);
}
run()请去阅读。你必须展示的与你的问题相关的代码,直接属于你的问题,而不只是在某个外部平台上转储。“我正在循环多个JSON对象…”-不,你没有,因为。这些是对象(因此
json
标记与此问题无关)