使用Ramda统一有关对象的信息

问题描述 投票:0回答:1

我需要您的支持才能在ramda中生成以下结果。

我已经做了一些方法,并且已经达到了这些结果,但是现在我需要通过productCode进行合并来生成以下结果,其中serviceType将是一个按持续时间排序并相关的数组:

DATA

data = [
    {
            "id": "ck5ii4ysl04vn0744z7liu0f3",
            "pdvIntegrationStatus": "WAITING",
            "sapIntegrationStatus": "WAITING",
            "updatedAt": "2020-01-17T18:34:13.075Z",
            "category": {
                    "code": "CEL",
                    "description": "Celular e Smartphones"
            },
            "serviceType": {
                    "code": "RF",
                    "description": "descrição SEGURO ROUBO OU FURTO"
            },
            "productCode": "4004593",
            "duration": [
                    24,
                    12
            ]
    },
    {
            "id": "ck5ii4yr704vc0744sjw3tljd",
            "pdvIntegrationStatus": "WAITING",
            "sapIntegrationStatus": "WAITING",
            "updatedAt": "2020-01-17T18:34:13.075Z",
            "category": {
                    "code": "CEL",
                    "description": "Celular e Smartphones"
            },
            "serviceType": {
                    "code": "GE",
                    "description": "descrição da garantia estendida"
            },
            "productCode": "4004593",
            "duration": [
                    12
            ]
    },
    {
            "id": "ck5ii4yr704vc0744sjw3tljr",
            "pdvIntegrationStatus": "INTEGRATED",
            "sapIntegrationStatus": "INTEGRATED",
            "updatedAt": "2020-01-18T15:34:09.000Z",
            "category": {
                    "code": "DUC",
                    "description": "Duchas e chuveiros"
            },
            "serviceType": {
                    "code": "GE",
                    "description": "descrição da garantia estendida"
            },
            "productCode": "4004594",
            "duration": [
                    24
            ]
    },
    {
            "id": "ck5ii4ysl04vn0744z7liu0f6",
            "pdvIntegrationStatus": "WAITING",
            "sapIntegrationStatus": "INTEGRATED",
            "updatedAt": "2020-01-17T18:34:13.075Z",
            "category": {
                    "code": "DUC",
                    "description": "Duchas e chuveiros"
            },
            "serviceType": {
                    "code": "RF",
                    "description": "descrição SEGURO ROUBO OU FURTO"
            },
            "productCode": "4004596",
            "duration": [
                    24,
                    12
            ]
    },
    {
            "id": "ck5ii4ysl04vn0744z7liu0f0",
            "pdvIntegrationStatus": "INTEGRATED",
            "sapIntegrationStatus": "WAITING",
            "updatedAt": "2020-01-17T18:34:13.075Z",
            "category": {
                    "code": "CEL",
                    "description": "Celular e Smartphones"
            },
            "serviceType": {
                    "code": "GE",
                    "description": "descrição da garantia estendida"
            },
            "productCode": "4004595",
            "duration": [
                    12
            ]
    },
    {
            "id": "ck5ii4ysl04vn0744z7liu0f1",
            "pdvIntegrationStatus": "INTEGRATED",
            "sapIntegrationStatus": "INTEGRATED",
            "updatedAt": "2020-01-17T18:34:13.075Z",
            "category": {
                    "code": "DUC",
                    "description": "Duchas e chuveiros"
            },
            "serviceType": {
                    "code": "GE",
                    "description": "descrição da garantia estendida"
            },
            "productCode": "4004596",
            "duration": [
                    12
            ]
    },
    {
            "id": "ck5ii4ysl04vn0744z7liu0f2",
            "pdvIntegrationStatus": "INTEGRATED",
            "sapIntegrationStatus": "INTEGRATED",
            "updatedAt": "2020-01-17T18:34:13.075Z",
            "category": {
                    "code": "VENT",
                    "description": "Ventiladores"
            },
            "serviceType": {
                    "code": "GE",
                    "description": "descrição da garantia estendida"
            },
            "productCode": "4004597",
            "duration": [
                    24
            ]
    },
    {
            "id": "ck5ii4ysl04vn0744z7liu0f4",
            "pdvIntegrationStatus": "INTEGRATED",
            "sapIntegrationStatus": "INTEGRATED",
            "updatedAt": "2020-01-17T18:34:13.075Z",
            "category": {
                    "code": "DUC",
                    "description": "Duchas e chuveiros"
            },
            "serviceType": {
                    "code": "RF",
                    "description": "descrição SEGURO ROUBO OU FURTO"
            },
            "productCode": "4004594",
            "duration": [
                    12
            ]
    },
    {
            "id": "ck5ii4ysl04vn0744z7liu0f5",
            "pdvIntegrationStatus": "WAITING",
            "sapIntegrationStatus": "WAITING",
            "updatedAt": "2020-01-17T18:34:13.075Z",
            "category": {
                    "code": "CEL",
                    "description": "Celular e Smartphones"
            },
            "serviceType": {
                    "code": "RF",
                    "description": "descrição SEGURO ROUBO OU FURTO"
            },
            "productCode": "4004595",
            "duration": [
                    24
            ]
    },
    {
            "id": "ck5ii4ysl04vn0744z7liu0f9",
            "pdvIntegrationStatus": "WAITING",
            "sapIntegrationStatus": "WAITING",
            "updatedAt": "2020-01-17T15:34:13.000Z",
            "category": {
                    "code": "VENT",
                    "description": "Ventiladores"
            },
            "serviceType": {
                    "code": "RF",
                    "description": "descrição SEGURO ROUBO OU FURTO"
            },
            "productCode": "4004597",
            "duration": [
                    24
            ]
    }
 ]

预期结果

resultExpected = [
    {
            "id": "ck5ii4ysl04vn0744z7liu0f3",
            "productCode": "4004593",
            "category": {
                    "code": "CEL",
                    "description": "Celular e Smartphones"
            },
            "updatedAt": "2020-01-17T18:34:13.075Z",
            "pdvIntegrationStatus": false,
            "sapIntegrationStatus": false,
            "serviceType": [
                    {
                            "code": "GE",
                            "description": "descrição da garantia estendida"
                    },{
                            "code": "RF",
                            "description": "descrição SEGURO ROUBO OU FURTO"
                    }
            ],
            "duration_GE": [
                    12
            ],
            "duration_RF": [
                    24,
                    12
            ]
    },
    {
            "id": "ck5ii4yr704vc0744sjw3tljr",
            "productCode": "4004594",
            "category": {
                    "code": "DUC",
                    "description": "Duchas e chuveiros"
            },
            "updatedAt": "2020-01-18T15:34:09.000Z",
            "pdvIntegrationStatus": true,
            "sapIntegrationStatus": true,
            "serviceType": [
                    {
                            "code": "GE",
                            "description": "descrição da garantia estendida"
                    },
                    {
                            "code": "RF",
                            "description": "descrição SEGURO ROUBO OU FURTO"
                    }
            ],
            "duration_GE": [
                    12
            ],
            "duration_RF": [
                    24
            ]
    },
    {
            "id": "ck5ii4ysl04vn0744z7liu0f0",
            "productCode": "4004595",
            "category": {
                    "code": "CEL",
                    "description": "Celular e Smartphones"
            },
            "updatedAt": "2020-01-17T18:34:13.075Z",
            "pdvIntegrationStatus": true,
            "sapIntegrationStatus": false,
            "serviceType": [
                    {
                            "code": "GE",
                            "description": "descrição da garantia estendida"
                    },
                    {
                            "code": "RF",
                            "description": "descrição SEGURO ROUBO OU FURTO"
                    }
            ],
            "duration_GE": [
                    24
            ],
            "duration_RF": [
                    12
            ]
    },
    {
            "id": "ck5ii4ysl04vn0744z7liu0f6",
            "productCode": "4004596",
            "category": {
                    "code": "DUC",
                    "description": "Duchas e chuveiros"
            },
            "updatedAt": "2020-01-17T18:34:13.075Z",
            "pdvIntegrationStatus": false,
            "sapIntegrationStatus": true,
            "serviceType": [
                    {
                            "code": "GE",
                            "description": "descrição da garantia estendida"
                    }, {
                            "code": "RF",
                            "description": "descrição SEGURO ROUBO OU FURTO"
                    }
            ],
            "duration_GE": [
                    12
            ],
            "duration_RF": [
                    24,
                    12
            ]
    },
    {
            "id": "ck5ii4ysl04vn0744z7liu0f2",
            "productCode": "4004597",
            "category": {
                    "code": "VENT",
                    "description": "Ventiladores"
            },
            "updatedAt": "2020-01-17T18:34:13.075Z",
            "pdvIntegrationStatus": true,
            "sapIntegrationStatus": true,
            "serviceType": [
                    {
                            "code": "GE",
                            "description": "descrição da garantia estendida"
                    },
                    {
                            "code": "RF",
                            "description": "descrição SEGURO ROUBO OU FURTO"
                    }
            ],
            "duration_GE": [
                    24
            ],
            "duration_RF": [
                    24
            ]
    }
]

我已经尝试过编写此代码,但是持续时间数组会在信息即将到来时将其随机保存,因此我需要持续时间中的第一个排列是“ Garantia Extendida”,第二个排列是“ Robo o Furto”,并且知道如何识别它所属的持续时间安排,例如:

持续时间:{GE:['12','24'],RF:['24']}

> const groupByTransaction = R.groupBy(R.prop('productCode'));
>          const mergeToObject = (rows) => Object.values(rows).map( item => (   {    ...R.pickAll(['id'], item[0]),    ...R.pickAll(['productCode'], item[0]),    ...R.pickAll(['category'],
> item[0]),    ...R.pickAll(['updatedAt'], item[0]),   
> pdvIntegrationStatus: R.contains(R.pluck('pdvIntegrationStatus',
> item)[0], 'INTEGRATED'),    sapIntegrationStatus:
> R.contains(R.pluck('sapIntegrationStatus', item)[0], 'INTEGRATED'),   
> serviceType: R.pluck('serviceType', item),    duration_GE:
> (R.pluck('duration', item))[1],    duration_RF: (R.pluck('duration',
> item))[0] } ));
>          const hasDuplicates = R.pipe( groupByTransaction, mergeToObject );
> 
> rows = hasDuplicates(rows);
javascript arrays reduce ramda.js
1个回答
0
投票

首先,一个请求:在发布更多问题之前,请阅读How to create a Minimal, Reproducible Example。问题中的数据远远多于证明请求的行为所需的数据。数组中的条目比需要的多,并且它们的属性比要求的多。在输入和所需的输出之间来回滚动以尝试了解您的操作非常乏味,以至于我几乎放弃了。

© www.soinside.com 2019 - 2024. All rights reserved.