【问题标题】:Problems with arrays and matrices in JSJS中数组和矩阵的问题
【发布时间】:2023-01-19 23:37:59
【问题描述】:

我希望函数通过两个表,50 以下和 51 到 75 之间,并匹配三个参数。如果这三个匹配一个数组,那么我希望它返回“良好匹配”,如果不是,我希望它匹配前两个并返回数组的第三个元素。我为此伤透了脑筋(退出编程新手),我不明白为什么它返回未定义或错误的元素。 (可能绝对不是这样做的方法)。

const kabelDikte = ( automaat, meter, typeKabel) => {
  const tableBetween51and75 = [
    [16, 75, 4],
    [20, 75, 4],
    [25, 75, 6],
    [32, 75, 10],
    [40, 75, 10],
    [50, 75, 10],
    [63, 75, 16],
    [80, 75, 25],
  ];

  const tableUnder50 = [
    [16, 50, 2.5],
    [20, 50, 2.5],
    [25, 50, 4],
    [32, 50, 6],
    [40, 50, 6],
    [50, 50, 10],
    [63, 50, 10],
    [80, 50, 16],
  ];

  let match50 = [];
  let match75 = [];

  match50 = tableUnder50.filter((array) => {
    return array[0] === automaat && meter <= array[1];
  });

  match75 = tableBetween51and75.filter((array) => {
    return array[0] === automaat && meter <= array[1];
  });



  if(match50[0].slice(2) === typeKabel){
    return "Good match"
  } else if (match50[0].slice(2) !== typeKabel){
    return match50[0].slice(2)
  }else if (match75[0].slice(2) === typeKabel){
    return "Good match"
  }else if (match75[0].slice(2) !== typeKabel){
    return match50[0].slice(2)
  } else {
    return "No match"
  }

}


  if(match50[0].slice(2) === typeKabel){
    return "Good match"
  } else if (match50[0].slice(2) !== typeKabel){
    return match50[0].slice(2)
  }else if (match75[0].slice(2) === typeKabel){
    return "Good match"
  }else if (match75[0].slice(2) !== typeKabel){
    return match50[0].slice(2)
  } else {
    return "No match"
  }

}

console.log(kabelDikte(16,49,2.5));

【问题讨论】:

    标签: javascript arrays


    【解决方案1】:

    问题出在您的代码中。您只检查数组 match50[0]match75[0] 的第一个元素,而不是这样做,您必须检查 match50[0]match75[0] 的所有元素。

    有关更多信息,请检查此代码:

    const kabelDikte = (automaat, meter, typeKabel) => {
      const tableBetween51and75 = [
        [16, 75, 4],
        [20, 75, 4],
        [25, 75, 6],
        [32, 75, 10],
        [40, 75, 10],
        [50, 75, 10],
        [63, 75, 16],
        [80, 75, 25],
      ];
    
      const tableUnder50 = [
        [16, 50, 2.5],
        [20, 50, 2.5],
        [25, 50, 4],
        [32, 50, 6],
        [40, 50, 6],
        [50, 50, 10],
        [63, 50, 10],
        [80, 50, 16],
      ];
    
      let match50 = tableUnder50.filter((array) => {
        return array[0] === automaat && meter <= array[1];
      });
    
      let match75 = tableBetween51and75.filter((array) => {
        return array[0] === automaat && meter <= array[1];
      });
    
      let match = match50.concat(match75); //Combine match from both tables
    
      for (let i = 0; i < match.length; i++) {
        if (match[i][2] === typeKabel) {
          return "Good match"
        }
      }
      return match[0][2]
    }
    console.log(kabelDikte(16, 49, 2.5));

    如果您还有任何问题,请告诉我

    【讨论】:

    • 给了我“很好的匹配”,但它不是
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多