Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.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 如何删除JS中的属性并映射新对象?_Javascript_Arrays_Ecmascript 6 - Fatal编程技术网

Javascript 如何删除JS中的属性并映射新对象?

Javascript 如何删除JS中的属性并映射新对象?,javascript,arrays,ecmascript-6,Javascript,Arrays,Ecmascript 6,想要删除具有匹配错误代码的属性,并在完成所有筛选后转换新对象,我不会得到低于预期的响应。知道下面的代码有什么问题吗 如果settlementCode与drugPriceErrors匹配,findErrCode应返回true main.js const data = [{ "isBrand": true, "drugName": "Lipitor", "mailPrice": { "totalQ

想要删除具有匹配错误代码的属性,并在完成所有筛选后转换新对象,我不会得到低于预期的响应。知道下面的代码有什么问题吗

如果settlementCode与drugPriceErrors匹配,findErrCode应返回true

main.js

const data = [{
            "isBrand": true,
            "drugName": "Lipitor",
            "mailPrice": {
                "totalQuantity": 90,
                "rejectMessage": [{
                    "settlementCode": "99",
                    "settlementDesc": "Sorry, the system is temporarily:Lo sentimos,Intente(Código de error 85)"
                }]
            },
            "retailPrice": {
                "totalQuantity": 30,
                "rejectMessage": [{
                    "settlementCode": "85",
                    "settlementDesc": "Sorry, the system is temporarily:Lo sentimos,Intente(Código de error 85)"
                }]
            },
            "specialtyPrice": {}
        },
        {
            "isBrand": false,
            "drugName": "Atorvastatin Calcium",
            "drugStrength": "80mg",
            "drugForm": "Tablet",
            "mailPrice": {
                "totalQuantity": 90,
                "rejectMessage": [{
                    "settlementCode": "99",
                    "settlementDesc": "Sorry, the system is temporarily:Lo sentimos,Intente(Código de error 85)"
                }]
            },
            "retailPrice": {
                "totalQuantity": 30,
                "rejectMessage": [{
                    "settlementCode": "99",
                    "settlementDesc": "Sorry, the system is temporarily:Lo sentimos,Intente(Código de error 85)"
                }]
            },
            "specialtyPrice": {}
        }
    ];

const drugPricesErrors = [99,45,89];

function filterDrugs (data) { 
  const response = [];
const _drugPrice = data.map(item => {
        const retailHasCode = findErrCode(item.retailPrice.rejectMessage);
        const mailHasCode = findErrCode (item.mailPrice.rejectMessage);

        if(retailHasCode) {
            delete item.retailPrice;
        }

        if(mailHasCode) {
            delete item.mailPrice;
        }

  return item;

    });

    _.forEach(_drugPrice, function(drug) {
        if(drug.retailPrice !== undefined || drug.mailPrice !== undefined){
            response.push(drug);
        }
    });

  return response;
}

function findErrCode(data) {
    const filterMessage = data.filter( message => drugPriceErrors.includes(item.settlementCode));
    return filterMessage;
}
预期产量

[{
            "isBrand": true,
            "drugName": "Lipitor",
            "retailPrice": {
                "totalQuantity": 30,
                "rejectMessage": [{
                    "settlementCode": "85",
                    "settlementDesc": "Sorry, the system is temporarily:Lo sentimos,Intente(Código de error 85)"
                }]
            },
            "specialtyPrice": {}
        }
    ]

将您的
findErrCode
更新为如下内容:

let findErrCode = data => 
  data.some(i => drugPriceErrors.includes(Number(i.settlementCode)))
关键是使用
Number
转换您的
settlementCode
以使
数组正常工作。还可以使用
Array.some
,因为您只关心结果是真是假(布尔值)<代码>数组。过滤器实际上会返回记录等


您可以看到它正在工作

将您的
findErrCode
更新为如下内容:

let findErrCode = data => 
  data.some(i => drugPriceErrors.includes(Number(i.settlementCode)))
关键是使用
Number
转换您的
settlementCode
以使
数组正常工作。还可以使用
Array.some
,因为您只关心结果是真是假(布尔值)<代码>数组。过滤器实际上会返回记录等


您可以看到它正在工作

当前输出是什么?当前输出返回所有包含错误代码的对象当前输出是什么?当前输出返回所有包含错误代码的对象谢谢!谢谢你说的有道理!