首页 > 解决方案 > 比较每个项目的两个数组并根据条件返回?

问题描述

以下是包含项目的两个数组的代码片段。在这里,我首先要迭代positionItems,获取第一个项目并将该项目与第二个数组refundBasedOnPosition进行比较,它将匹配然后将该项目标签与distributionAssigningLabel 进行比较,如果标签等于distributionAssigningLabel 那么它将返回真否则为假。

在这种情况下,它将返回“Shashi”,因为进入第一个数组高级位置,因此它将占据该位置并与第二个数组匹配,第二个数组还包含位置名称 Senior,因此之后它将使用 distributionAssigningLabel 检查标签,所以它将匹配并返回true。

你能看看并告诉我实现这一目标的最佳优化方法吗?谢谢。

var positionItems = [
      "Director",
      "Vice President",
      "Senior Vice President",
      "Executive Vice President",
      "President","Senior"
    ];
    
 var refundBasedOnPosition = [
      {
        positionName: "Executive Vice President",
        positionCode: "Header",
        label: "Alyson"
      },
      {
        positionName: "Senior Vice President",
        positionCode: "Header",
        label: "Tyson"
      },
      { positionName: "Director", positionCode: "Header", label: "Shashi" },
      {
        positionName: "Vice President",
        positionCode: "Header",
        label: "Shashi"
      },
      { positionName: "President", positionCode: "Header", label: "Shashi" },
      {
        positionName: "Senior",
        positionCode: "Header",
        label: "Shashi N"
      },
      {
        positionName: "Senior",
        positionCode: "Header",
        label: "Shashi"
      },
      {
        positionName: "Vice President",
        positionCode: "Header",
        label: "Shashi B"
      },
    ];
    
    const distributionAssigningLabel = "Shashi";

我尝试使用以下方式,但它会比较不完全是我想要的

让 isLogginedName = false;

let filterRefundBasedOnPosition = refundBasedOnPosition.map((item, index) => {
  if (item.positionName === positionItems[index]) {
    if (distributionAssigningPersonFullName === item.label) {
      isLogginedName = true;
    }
  }
  return item;
});
console.log(isLogginedName);

但它没有像提到的条件那样进行比较。

标签: javascriptecmascript-6

解决方案


首先在您的代码中,在第二个 if 条件 - “distributionAssigningLabel”中,变量名称不正确,当您更正它时,它确实为“Shashi”返回“true”,不是因为高级职位,而是因为“总统”职位在您的逻辑中的匹配条件期间,它位于 Index - 4 处。

我假设您要检查该位置是否存在,如果存在,则使用您的常量值执行标签匹配?


推荐阅读