从Node js中的Javascript对象数组获取数据?

时间:2017-02-07 06:25:39

标签: javascript jquery arrays node.js

我正在尝试解析JS Object数组中的数据,并通过传递字段名称然后将数据保存在数组中来获取值。但由于某种原因,我没有得到正确的结果。这是我到目前为止所尝试的。我尝试记录我在val中获得的结果,这就是我得到的结果。

val:Array[6]
0
:
Object
BankName
:
"IM BANK"
MERCHANTNAME
:
"MPesa"
NO_OF_FAILED_BANK_TRANSACTIONS
:
0
NO_OF_FAILED_SERVICE_TRANSACTIONS
:
2
NO_OF_SUCCESSFUL_TRANSACTIONS
:
28
__proto__
:
Object
1
:
Object
2
:
Object
3
:
Object
4
:
Object
5
:
Object
length
:
6

How Do I parse the data from my val array by passing field names and then store inside my merchantname array etc.

    Homepage.js
<html>
<head>

    <script src="http://code.jquery.com/jquery-1.11.3.min.js" ></script>
    <script src="http://code.highcharts.com/highcharts.js" ></script>
    <script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>


</head>
<body>
<div id="container1" style="width:100%; height:400px;"></div>
<div id ="container2" style="height:20px;"></div>
<div id ="container3" style="width:100%; height:400px;"></div>
<script type="text/javascript">

        $(document).ready(function () {
            var bankid = [ 57, 9912, 9905, 16, 58 ];
            var country = ["KENYA", "KENYA", "KENYA", "UGANDA", "UGANDA"];
            var counter = 0;
            var merchantname = [];
            var successtranscs = [];
            var failedtranscs = [];
            var servicetranscs = [];
            var bankname;
            var rows =<%-JSON.stringify(Resultset)%>

                function initfunc() {
                    $.ajax({
                        type: "POST",
                        contentType: "application/json; charset=utf-8",
                        url: "/dashboard",
                        data: JSON.stringify({country: country[counter], bankid: bankid[counter]}),
                        dataType: "json",
                        success: function (Result) {
                            Result = Result.Resultset
                          // console.log("result", Result);


                            //  console.log("result",Result);
                            var data = [];
                            var merchantname = [];
                            var successtranscs = [];
                            var failedtranscs = [];
                            var servicetranscs = [];
                            var bankname;

                            $.each(Result, function(item, value){
                                console.log("val",value);
                                for (var i in value) {

                                     $.each(value[i], function(item, val){
                                        console.log(val);
                                        for(var i =0;i<val.length;i++)
                                        {
                                            merchantname.push(val[i].merchant_name);
                                            successtranscs.push(val[i].success_transcs);
                                            failedtranscs.push(val[i].failed_transcs);
                                            servicetranscs.push(val[i].service_transcs);
                                            bankname =val[i].bankname;
                                            console.log("merchantname",merchantname);
                                        }


//
                                   })
                                }
                            })
                           // merchantname.push(Result[i].merchant_name);
//                                    successtranscs.push(Result[i].success_transcs);
//                                    failedtranscs.push(Result[i].failed_transcs);
//                                    servicetranscs.push(Result[i].service_transcs);
//                                    bankname = Result[i].bankname;

                         //   console.log("merchantname",merchantname);
                            StackedChart(bankname, merchantname, successtranscs, failedtranscs, servicetranscs);
                            merchantname = [];
                            successtranscs = [];
                            failedtranscs = [];
                            servicetranscs = [];
                            if (counter == country.length - 1) {
                                counter = -1;
                                counter++;
                            }
                            else {
                                counter++;
                            }
                        },
                        error: function (Result) {
                            console.log(Result);
                        }
                    });


            }
            initfunc();

            function StackedChart(bank_name,merch_name, succ_val, fail_val, ser_val) {

                var myChart = Highcharts.chart('container1', {
                    chart: {
                        type: 'column'
                    },
                    title: {
                        text: bank_name
                    },
                    xAxis: {
                        categories: merch_name
                    },
                    yAxis: {
                        min: 0,
                        title: {
                            text: 'TransactionStatus'
                        },
                        stackLabels: {
                            enabled: true,
                            style: {
                                fontWeight: 'bold',
                                color: (Highcharts.theme && Highcharts.theme.textColor) || 'gray'
                            }
                        }
                    },
                    legend: {
                        align: 'right',
                        x: -30,
                        verticalAlign: 'top',
                        y: 25,
                        floating: true,
                        backgroundColor: (Highcharts.theme && Highcharts.theme.background2) || 'white',
                        borderColor: '#CCC',
                        borderWidth: 1,
                        shadow: false
                    },
                    tooltip: {
                        headerFormat: '<b>{point.x}</b><br/>',
                        pointFormat: '{series.name}: {point.y}<br/>Total: {point.stackTotal}'
                    },
                    plotOptions: {
                        column: {
                            stacking: 'normal',
                            dataLabels: {
                                enabled: true,
                                color: (Highcharts.theme && Highcharts.theme.dataLabelsColor) || 'white'
                            }
                        }
                    },
                    series: [{
                        name: 'Servicefailure',
                        data: ser_val
                    }, {
                        name: 'Failure',
                        data: fail_val
                    }, {
                        name: 'Success',
                        data: succ_val
                    }]
                });
            }




            setInterval(initfunc, 2000);
        });



</script>


</body>
</html>

2 个答案:

答案 0 :(得分:0)

您的访问密钥(marchant_name,success_transcs,..)与数组中对象的键(MERCHANTNAME,NO_OF_FAILED_BANK_TRANSACTIONS,...)不同。

尝试使用完全相同的键:

from memcached_stats import MemcachedStats
mem = MemcachedStats()

mem.keys()
['key-1',
 'key-2',
 'key-3',
 ... ]

答案 1 :(得分:0)

initfunc()中的嵌套循环看起来都错了。

  1. 回拨签名
  2. $.each()的回调签名为(item, index)

    1. 嵌套
    2. 您是否意识到$.each(function() {...})本身就是一个循环结构,而不需要for循环?

      你有嵌套在4级的循环。总结:

      $.each(...,  { // outer loop (n1 iterations)
          for(...) { // first inner loop (n2 iterations)
              $.each(..., function(element2, index2) { // second inner loop (n3 iterations)
                  for() { // third inner loop (n4 iterations)
                      // Here, inner statements are called n1 x n2 x n3 x n4 times
                  }
             });
          }
      });
      

      这不一定是错的,但是需要深深嵌套的循环是非常不寻常的。

      我想象你想要:

      $.each(Result, function(item) {
          $.each(item, function(val) {
              merchantname.push(val.merchant_name); // or .MERCHANTNAME?
              successtranscs.push(val.success_transcs); // or .NO_OF_SUCCESSFUL_TRANSACTIONS?
              failedtranscs.push(val.failed_transcs); // or .NO_OF_FAILED_BANK_TRANSACTIONS?
              servicetranscs.push(val.service_transcs); // or .NO_OF_FAILED_SERVICE_TRANSACTIONS?
              bankname = val.bankname; // or .BankName?
         });
      });
      

      或者只是:

      $.each(Result, function(val) {
          merchantname.push(val.merchant_name); // or .MERCHANTNAME?
          successtranscs.push(val.success_transcs); // or .NO_OF_SUCCESSFUL_TRANSACTIONS?
          failedtranscs.push(val.failed_transcs); // or .NO_OF_FAILED_BANK_TRANSACTIONS?
          servicetranscs.push(val.service_transcs); // or .NO_OF_FAILED_SERVICE_TRANSACTIONS?
          bankname = val.bankname; // or .BankName?
      });