使用javascript get查询循环进入一个空数组

时间:2019-04-03 04:57:38

标签: javascript mysql node.js html-framework-7

我想将我从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]

还有一个问题是如何获得这个数组的总数?

3 个答案:

答案 0 :(得分:2)

正如@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))

答案 1 :(得分:1)

您的问题在于此声明

var totalJuice = [];

由于它位于for循环中,因此每次都会重置该数组,这意味着您只能获得该数组中的最后一个值。您需要将该声明移至for循环之前,例如

var totalJuice = [];
for (i = 0; i < results.length; i++) {
     ...

要获得所有值的总和,可以在循环后执行

sum = totalJuice.reduce((c, v) => c + v);

答案 2 :(得分:0)

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);
});

您的控制台和数组变量声明在错误的位置,我已经打印了整个