【问题标题】:Populate array inside of function在函数内部填充数组
【发布时间】:2020-10-22 12:14:48
【问题描述】:

我有一个函数可以清除两个数组,然后用从 mysql 服务器接收到的值填充它们。

function sqlget() {
  var arrayA = [];
  var arrayB = [];
  con.query("SELECT * FROM table", function(err,result,fields) {
    if (err) throw err;
    Object.keys(result).forEach(function(key) {
      arrayA.push(result[key].columnA);
      arrayB.push(result[key].columnB);
    });
  });
}

然后我想做的是在函数外部调用 arrayA/arrayB 并让它返回函数内部获取的 sql 信息,例如......

sqlget()
console.log(arrayA)

任何关于如何做到这一点的建议将不胜感激。

【问题讨论】:

    标签: mysql node.js arrays function


    【解决方案1】:

    您可以在这里做一些事情。你可以在函数之外声明这些数组,所以你会有这样的东西:

    let arrayA = ['something'];
    let arrayB = [];
    
    function sqlget() {
      arrayA = [];
      arrayB = [];
    
      con.query("SELECT * FROM table", function(err,result,fields) {
        if (err) throw err;
        Object.keys(result).forEach(function(key) {
          arrayA.push(result[key].columnA);
          arrayB.push(result[key].columnB);
        });
      });
    }
    
    sqlget();
    console.log(arrayA)
    

    或者你也可以玩转,仍然返回函数内部的数组并返回一个对象:

    function sqlget() {
      const arrayA = [];
      const arrayB = [];
      
      con.query("SELECT * FROM table", function(err,result,fields) {
        if (err) throw err;
        Object.keys(result).forEach(function(key) {
          arrayA.push(result[key].columnA);
          arrayB.push(result[key].columnB);
        });
      });
    
      return {
        a: arrayA,
        b: arrayB
      };
    }
    
    const arrays = sqlget();
    
    console.log(arrays.a);
    console.log(arrays.b);
    

    【讨论】:

      【解决方案2】:

      您需要在函数之外定义这两个数组。当您在 {} 块或函数内定义变量时,您无法在此块之外访问其称为本地范围的变量。请阅读javascript scope

      var arrayA = [];
      var arrayB = [];
      
      function sqlget() {
        
        con.query("SELECT * FROM table", function(err,result,fields) {
          if (err) throw err;
          Object.keys(result).forEach(function(key) {
            arrayA.push(result[key].columnA);
            arrayB.push(result[key].columnB);
          });
        });
      } 
      

      【讨论】:

        猜你喜欢
        • 2016-06-15
        • 2021-06-25
        • 2021-12-16
        • 2021-02-23
        • 2016-05-02
        • 1970-01-01
        • 2020-01-13
        • 1970-01-01
        • 2017-11-07
        相关资源
        最近更新 更多