Как получить объект, который не имеет допустимого поля? - PullRequest
0 голосов
/ 04 января 2019

Я пытаюсь получить действительный и недействительный массив из моего data. Как мы используем фильтр, чтобы обе операции обеспечивали validArray, который соответствует условию, и наоборот.

данные

   const misMatchedItems = [];
      const matchedItems = [];
       const rxInfos=  [{
                "drugName": "ATRIPLA TABS",
                "ancillaryProductInd": "false",
                "firstFillIndicator": "N",
                "indexId": "1",
                "uniqueRxId": "1711511459709"
            },
            {
                "errorDetails": {
                    "errorCode": "0077",
                    "errorDesc": "uniqueRxId not found for2711511911555"
                }
            }
        ]

    const validArray = rxInfos.filter((element) => {
                    return (element.hasOwnProperty('indexId'));
                });
    matchedItems = validArray;
    const inValidArray = rxInfos.filter((element) => {
                    return (element.hasOwnProperty(!'indexId'));
                });

    misMatchedItems = inValidArray;

Ответы [ 2 ]

0 голосов
/ 04 января 2019

При этом используется деструктивное присвоение и уменьшение для достижения вашей цели.

const [misMatchedItems, matchedItems] = (rxInfos.reduce((rxInfosSeparated, item) => {
  rxInfosSeparated[item.hasOwnProperty('indexId') ? 1 : 0].push(item);
  return rxInfosSeparated
}, [[] , []]));

const rxInfos=  [{
  "drugName": "ATRIPLA TABS",
  "ancillaryProductInd": "false",
  "firstFillIndicator": "N",
  "indexId": "1",
  "uniqueRxId": "1711511459709"
},
{
  "errorDetails": {
      "errorCode": "0077",
      "errorDesc": "uniqueRxId not found for 2711511911555"
  }
},
{
  "errorDetails": {
      "errorCode": "0078",
      "errorDesc": "uniqueRxId not found for 2711511911556"
  }
},
{
  "drugName": "ATRIPLA CAPSULES",
  "ancillaryProductInd": "false",
  "firstFillIndicator": "N",
  "indexId": "2",
  "uniqueRxId": "1711511459708"
}]

const [misMatchedItems, matchedItems] = (rxInfos.reduce((rxInfos, item) => {
  rxInfos[item.hasOwnProperty('indexId') ? 1 : 0].push(item);
  return rxInfos
}, [[] , []]));

console.log(misMatchedItems);
console.log(matchedItems);
0 голосов
/ 04 января 2019

У вас отрицание (восклицательный знак) в неправильном месте. Я считаю, что это должно работать:

const inValidArray = rxInfos.filter((element) => {
            return !(element.hasOwnProperty('indexId'));
        });

Вы также можете выполнить оба действия за один проход:

const validArray = [];
const invalidArray = [];

rxInfos.forEach(function(element) {
   if (element.hasOwnProperty('indexId')) {
       validArray.push(element);
   } else {
       invalidArray.push(element);
   }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...