使用 javascript 获取查询循环到一个空数组
Loop into an empty array with javascript get query
我想将从 mysql 得到的结果推送到一个空数组 (totalJuice)
var sqlgetgauge =
"SELECT juice1_num FROM `customers_out` WHERE MONTH(date)=4 ";
connection.query(sqlgetgauge, function(err, results, field) {
if (err) throw err;
for (i = 0; i < results.length; i++) {
var numberjuice1 = Number(results[i].juice1_num / 100);
var totalJuice = [];
totalJuice.push(numberjuice1);
console.log(totalJuice);
//This is a Gauge Update
juice_num_1.update({
value: numberjuice1,
});
}
});
但是这段代码一直显示 console.log(totalJuice);
结果
gauge_picker.js:85[0.5]
gauge_picker.js:85[0.02]
gauge_picker.js:85[0.02]
我希望数组为 [0.5 ,0.02 , 0.02 ]
另外一个问题是我如何得到这个数组的总数?
您的问题在于此声明
var totalJuice = [];
因为它在您的 for
循环中,所以它每次都会重置数组,这意味着您只能获得数组中的最后一个值。您需要将该声明移到 for
循环之前,例如
var totalJuice = [];
for (i = 0; i < results.length; i++) {
...
要获得所有值的总和,在循环之后你可以做
sum = totalJuice.reduce((c, v) => c + v);
var sqlgetgauge = "SELECT juice1_num FROM `customers_out` WHERE MONTH(date)=4";
var totalJuice = [];
connection.query(sqlgetgauge, function(err, results, field) {
if (err) throw err;
for (i = 0; i < results.length; i++) {
var numberjuice1 = Number(results[i].juice1_num / 100);
totalJuice.push(numberjuice1);
//This is a Gauge Update
juice_num_1.update({
value: numberjuice1,
});
}
const sum = totalJuice.reduce((accumulator, a)=> return accumulator + a );
console.log(totalJuice);
console.log("sum of array element",sum)
console.log("total length",totalJuice.length);
});
你的控制台和数组变量的声明在错误的地方,我已经打印了总数
如@Nick 所说,您可以在 for 循环上方声明您的数组,您将获得所需的结果。以及计算数组值总和的第二个问题的答案,您可以使用 array_sum() 并将数组作为参数传递给 array_sum 函数。
<?php
$a=array(5,15,25);
echo array_sum($a);
?>
嗨红,
您可以在下面看到如何使用 javascript 计算数组值的总和。您可以使用 reduce 方法并将函数传递给它,此函数将为数组的每个值执行并为您提供所需的结果。在这里,我执行了加法运算以获得数组值的总和。
var ar = [55,20,30]
function add(result, num)
{
return result + num
}
console.log(ar.reduce(add))
我想将从 mysql 得到的结果推送到一个空数组 (totalJuice)
var sqlgetgauge =
"SELECT juice1_num FROM `customers_out` WHERE MONTH(date)=4 ";
connection.query(sqlgetgauge, function(err, results, field) {
if (err) throw err;
for (i = 0; i < results.length; i++) {
var numberjuice1 = Number(results[i].juice1_num / 100);
var totalJuice = [];
totalJuice.push(numberjuice1);
console.log(totalJuice);
//This is a Gauge Update
juice_num_1.update({
value: numberjuice1,
});
}
});
但是这段代码一直显示 console.log(totalJuice);
结果gauge_picker.js:85[0.5]
gauge_picker.js:85[0.02]
gauge_picker.js:85[0.02]
我希望数组为 [0.5 ,0.02 , 0.02 ]
另外一个问题是我如何得到这个数组的总数?
您的问题在于此声明
var totalJuice = [];
因为它在您的 for
循环中,所以它每次都会重置数组,这意味着您只能获得数组中的最后一个值。您需要将该声明移到 for
循环之前,例如
var totalJuice = [];
for (i = 0; i < results.length; i++) {
...
要获得所有值的总和,在循环之后你可以做
sum = totalJuice.reduce((c, v) => c + v);
var sqlgetgauge = "SELECT juice1_num FROM `customers_out` WHERE MONTH(date)=4";
var totalJuice = [];
connection.query(sqlgetgauge, function(err, results, field) {
if (err) throw err;
for (i = 0; i < results.length; i++) {
var numberjuice1 = Number(results[i].juice1_num / 100);
totalJuice.push(numberjuice1);
//This is a Gauge Update
juice_num_1.update({
value: numberjuice1,
});
}
const sum = totalJuice.reduce((accumulator, a)=> return accumulator + a );
console.log(totalJuice);
console.log("sum of array element",sum)
console.log("total length",totalJuice.length);
});
你的控制台和数组变量的声明在错误的地方,我已经打印了总数
如@Nick 所说,您可以在 for 循环上方声明您的数组,您将获得所需的结果。以及计算数组值总和的第二个问题的答案,您可以使用 array_sum() 并将数组作为参数传递给 array_sum 函数。
<?php
$a=array(5,15,25);
echo array_sum($a);
?>
嗨红,
您可以在下面看到如何使用 javascript 计算数组值的总和。您可以使用 reduce 方法并将函数传递给它,此函数将为数组的每个值执行并为您提供所需的结果。在这里,我执行了加法运算以获得数组值的总和。
var ar = [55,20,30]
function add(result, num)
{
return result + num
}
console.log(ar.reduce(add))