【问题标题】:If statement is true, script returns console.log() inside block but not return如果语句为真,脚本在块内返回 console.log() 但不返回
【发布时间】:2020-03-01 16:22:26
【问题描述】:

我尽量做到简洁,所以我的帖子主要是代码。我认为这在某种程度上违反了规则,但我认为如果您将代码粘贴到控制台中,这是您查看问题的最简单方法。我不明白为什么 if 语句为validIn 函数返回console.log() 但不返回位于同一块中的false。

所以功能 checkSudo 单独工作正常:

function checkSudo(data) {
    for (var i = 0; i < data.length; i++) {
      if (i < data.length - 1 && data[i].length !== data[i + 1].length) {
        console.log("hello");
        return false;
      }
      if (
        i < data.length - 1 &&
        data[i].toString() === data[i + 1].toString()
      ) {
        return false;
      }
      let sortRows = data[i].sort((x, y) => x - y);
      let compare = [...new Set(sortRows)];
      if (sortRows.toString() !== compare.toString()) {
        return false;
      }
    }
    for (var i = 0; i < data.length; i++) {
      let columns = [];
      for (var j = 0; j < data.length; j++) {
        columns.push(data[i][j]);
        columns.sort((x, y) => x - y);
        let compare = [...new Set(columns)];
        if (columns.toString() !== compare.toString()) {
          return false;
        }
      }
    }
    return true;
  } 

但是在isValid函数里面只显示console.log(???)

function isValid(data) {
  if (data.length == 1 && data[0] != 1) {
    return false;
  }
  if (data.length == 0) {
    return false;
  }
  checkSudo(data);
  function checkSudo(data) {
    for (var i = 0; i < data.length; i++) {
      if (i < data.length - 1 && data[i].length !== data[i + 1].length) {
        console.log("hello");
        return false;
      }
      if (
        i < data.length - 1 &&
        data[i].toString() === data[i + 1].toString()
      ) {
        return false;
      }
      let sortRows = data[i].sort((x, y) => x - y);
      let compare = [...new Set(sortRows)];
      if (sortRows.toString() !== compare.toString()) {
        return false;
      }
    }
    for (var i = 0; i < data.length; i++) {
      let columns = [];
      for (var j = 0; j < data.length; j++) {
        columns.push(data[i][j]);
        columns.sort((x, y) => x - y);
        let compare = [...new Set(columns)];
        if (columns.toString() !== compare.toString()) {
          return false;
        }
      }
    }
    return true;
  }
}

调用函数的数组(返回false):

[
  [1, 2, 4, 2,3],
  [3,2, 4,1],

  [4,1, 3,2],
  [2,3, 1,4]
];

哔声是怎么回事?

【问题讨论】:

    标签: javascript


    【解决方案1】:

    需要返回 checkSudo 吗?

    function isValid(data) {
      if (data.length == 1 && data[0] != 1) {
        return false;
      }
      if (data.length == 0) {
        return false;
      }
      // add return
      return checkSudo(data);
      function checkSudo(data) {
        for (var i = 0; i < data.length; i++) {
          if (i < data.length - 1 && data[i].length !== data[i + 1].length) {
            console.log("hello");
            return false;
          }
          if (
            i < data.length - 1 &&
            data[i].toString() === data[i + 1].toString()
          ) {
            return false;
          }
          let sortRows = data[i].sort((x, y) => x - y);
          let compare = [...new Set(sortRows)];
          if (sortRows.toString() !== compare.toString()) {
            return false;
          }
        }
        for (var i = 0; i < data.length; i++) {
          let columns = [];
          for (var j = 0; j < data.length; j++) {
            columns.push(data[i][j]);
            columns.sort((x, y) => x - y);
            let compare = [...new Set(columns)];
            if (columns.toString() !== compare.toString()) {
              return false;
            }
          }
        }
        return true;
      }
    }
    
    var dataz = [
      [1, 2, 4, 2,3],
      [3,2, 4,1],
    
      [4,1, 3,2],
      [2,3, 1,4]
    ]
    
    console.log(isValid(dataz))

    【讨论】:

      猜你喜欢
      • 2011-01-13
      • 1970-01-01
      • 2022-11-25
      • 1970-01-01
      • 2021-08-13
      • 1970-01-01
      • 2020-12-10
      • 2021-03-04
      • 2019-11-15
      相关资源
      最近更新 更多