在函数内部填充数组
Posted
技术标签:
【中文标题】在函数内部填充数组【英文标题】: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)
任何关于如何做到这一点的建议将不胜感激。
【问题讨论】:
【参考方案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);
);
);
【讨论】:
以上是关于在函数内部填充数组的主要内容,如果未能解决你的问题,请参考以下文章