【问题标题】:use every and filter function together in JavaScript在 JavaScript 中一起使用 every 和 filter 函数
【发布时间】:2021-12-03 08:15:20
【问题描述】:

我有两个字符串数组。我想查看一个数组是否具有与另一个数组相同的任何值,然后打印仅具有唯一值的数组。为此,我在两个数组上执行 JavaScript 每个函数,如果一个数组具有来自另一个数组的共同值,则返回布尔值,然后如果条件为真,我正在对数组进行过滤以显示数据。以下是数组:

marketingCarrierCode: ["DL", "AA"]
operatingCarrierCode: ["AA", "AA"]

现在我正在做每一个过滤器:

const hasSameCarrierCode = operatingAirlineCode.every(
    code => marketingAirlineCode.indexOf(code) !== -1,
  );
  const listOfOperatingCarriers = operatingAirlineCode.filter(
    code => marketingAirlineCode.indexOf(code) === -1,
  );

这给了我:

hasSameCarrierCode: true
listOfOperatingCarriers: []

现在我想在一个函数中执行每个和过滤函数,我该怎么做?

【问题讨论】:

  • 你想要和上面一样的输出吗? hasSameCarrierCode: true listOfOperatingCarriers: []
  • "...如果一个数组具有与另一个数组相同的值":请注意,您的函数不执行 this 检查。相反,它会检查一个数组是否有 only 与另一个数组相同的值。如果你真的对第一个条件感兴趣,你应该使用Array.some() 而不是Array.every()
  • @SanaMumtazm 是的
  • @lbsn 我想做我写的代码,也许我无法用语言正确描述,我现在只想将这些 each 和 filter 函数组合到一个函数中,而不是使用这两个函数。
  • @ashfaq 在这种情况下,您不需要第一个功能,正如下面 davood 的回答中所指出的那样。如果第一个条件为真,Array.filter() 将始终返回一个空数组,因此您只需检查 listOfOperatingCarriers 的长度即可

标签: javascript arrays reactjs


【解决方案1】:

不需要第一个函数。你可以使用thie:

const listOfOperatingCarriers = operatingAirlineCode.filter(
  code => marketingAirlineCode.indexOf(code) === -1,
);

listOfOperatingCarriers.length !== operatingAirlineCode.length   => true,
listOfOperatingCarriers => []

【讨论】:

    【解决方案2】:

    在您的示例代码中,operatingCarrierCode 中的“对于每个”代码,您正在检查它是否存在于 marketingAirlineCode 中。如果marketingAirlineCode 中不存在任何代码,则测试失败,即hasSameCarrierCode 应该为假。此外,您在列表listOfOperatingCarriers 中添加不常见的代码。所有这些都可以合并为一个forEach,如下所示:

    const marketingAirlineCode = ["DL", "AA"]
    const operatingCarrierCode = ["AA", "AA"]
    
    let hasSameCarrierCode = true;
    let listOfOperatingCarriers = [];
    
    operatingCarrierCode.forEach(code => {
      if (marketingAirlineCode.indexOf(code) === -1) {
        hasSameCarrierCode = false;
        listOfOperatingCarriers.push(code);
      }
    })
    
    console.log(`hasSameCarrierCode:`, hasSameCarrierCode)
    console.log(`listOfOperatingCarriers:`, listOfOperatingCarriers);

    一个更小的版本可能是:

    const marketingAirlineCode = ["DL", "AA"]
    const operatingCarrierCode = ["AA", "AA"]
    
    const listOfOperatingCarriers = operatingCarrierCode.filter(code => marketingAirlineCode.indexOf(code) === -1);
    const hasSameCarrierCode = listOfOperatingCarriers.length === 0;
    
    console.log(`hasSameCarrierCode:`, hasSameCarrierCode)
    console.log(`listOfOperatingCarriers:`, listOfOperatingCarriers);

    【讨论】:

      猜你喜欢
      • 2016-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-23
      相关资源
      最近更新 更多