javascript - 如何使用reduce从数组中删除元素?

标签 javascript typescript ecmascript-6 filter

尝试根据以下代码的某些逻辑过滤掉对象将返回空数组,尝试实现以下逻辑的任何帮助将不胜感激

1-如果第一个对象(firstFillIndicator = Y,acceptDigitalFirstFill = Y)和第二个对象(firstFillIndicator = Y,acceptDigitalFirstFill = N)。这个对象应该被删除它的假值。

2-如果第一个对象(firstFillIndicator = Y,acceptDigitalFirstFill = Y)和第二个对象(firstFillIndicator = N,acceptDigitalFirstFill = Y)。这个对象应该被删除它的假值。

3-如果两个对象都有firstFillIndicator 和acceptDigitalFirstFill 都有一些值为真值。

main.ts

function validateSingleOrder(data){
  let isValid = false;
  const filteredDrugs = data.filter((item) => {
      isValid = isValidOrder(item);
      if(isValid){
        return true;
      } else {
        return false;
      }
  })

 return filteredDrugs;
}

function isValidOrder(item){
   item.rxInfos.reduce((a, c) => {
    return (a.acceptDigitalFirstFill === "Y" && c.firstFillIndicator === "Y") || (a.firstFillIndicator === "N" && c.acceptDigitalFirstFill === "N")
  });
}

console.log(validateSingleOrder(rxDetails));

数据

 const rxDetails = [
      {
            indexID: 1,
            rxInfos: [{
                    firstFillIndicator: "Y",
                    acceptDigitalFirstFill: "Y",
                    rxNumber: "1512"
                },
                {
                    firstFillIndicator: "Y",
                    acceptDigitalFirstFill: "N",
                    rxNumber: "16021"

                }
            ]
      },
      {
          indexID: 2,
          rxInfos: [{
                  firstFillIndicator: "Y",
                  acceptDigitalFirstFill: "Y",
                  rxNumber: "1512"
              },
              {
                  firstFillIndicator: "N",
                  acceptDigitalFirstFill: "Y",
                  rxNumber: "16021"

              }
          ]
      },
      {
          indexID: 3,
          rxInfos: [{
                  firstFillIndicator: "Y",
                  acceptDigitalFirstFill: "Y",
                  rxNumber: "1512"
              },
              {
                  firstFillIndicator: "N",
                  acceptDigitalFirstFill: "N",
                  rxNumber: "16021"

              }
          ]
      }
    ]

预期结果

[{
        indexID: 3
        rxInfoss: [{
                firstFillIndicator: "Y",
                acceptDigitalFirstFill: "Y",
                rxNumber: "1512"
            },
            {
                firstFillIndicator: "N",
                acceptDigitalFirstFill: "N",
                rxNumber: "16021"

            }
        ]
    },

];

最佳答案

问题是 isValidOrder 函数不会返回任何内容,无论如何,使用 .every(..) 比使用 更合适>.reduce(..) 在本例中,这是一个示例:

const rxDetails = [{
    indexID: 1,
    rxInfos: [{
        firstFillIndicator: "Y",
        acceptDigitalFirstFill: "Y",
        rxNumber: "1512"
      },
      {
        firstFillIndicator: "Y",
        acceptDigitalFirstFill: "N",
        rxNumber: "16021"

      }
    ]
  },
  {
    indexID: 2,
    rxInfos: [{
        firstFillIndicator: "Y",
        acceptDigitalFirstFill: "Y",
        rxNumber: "1512"
      },
      {
        firstFillIndicator: "N",
        acceptDigitalFirstFill: "Y",
        rxNumber: "16021"

      }
    ]
  },
  {
    indexID: 3,
    rxInfos: [{
        firstFillIndicator: "Y",
        acceptDigitalFirstFill: "Y",
        rxNumber: "1512"
      },
      {
        firstFillIndicator: "N",
        acceptDigitalFirstFill: "N",
        rxNumber: "16021"

      }
    ]
  }
];


const result = rxDetails.filter(o => {
  return o.rxInfos.every(v => {
    return (v.firstFillIndicator === 'Y' && v.acceptDigitalFirstFill === 'Y') || (v.firstFillIndicator === 'N' && v.acceptDigitalFirstFill === 'N');
  });
});

console.log(result);

关于javascript - 如何使用reduce从数组中删除元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60271056/

相关文章:

java - 在JavaScript中使用“<g:message标签

Angular 5 - Jasimine 测试 - 错误 : Invalid provider for the NgModule 'DynamicTestModule' - only instances of Provider and Type are allowed

javascript - 如何将新窗口中创建的新元素的数据返回到下拉列表中

javascript - 将事务回滚到特定的保存点

typescript - Polymer 2.x typescript 装饰器示例

node.js - Eslint 说 Typescript 应用程序中的所有枚举都是 "already declared in the upper scope"

javascript - 如何让 mixins 在 React es6 中工作?

javascript - 如何在ES6箭头函数调用的函数中使用 `this`?

javascript - 刷新时滚动到页面顶部

Javascript定位隐藏字段