简体   繁体   English

Javascript数组。 高级

[英]Javascript array. Advanced

I have JSON string from my php script like this: 我有我的PHP脚本中的JSON字符串,如下所示:

var r.co = {
                "A20018425":[
                                {"balance":"1390.31"},      // 1
                                {"balance":"1304.11"},      // 2
                                {"balance":"1188.11"},      // 3
                                {"balance":"1421.71"}       // 4
                            ],

                "A25005922":[
                                {"balance":"1000"},         // 1
                                {"balance":"1000.86"},      // 2
                                {"balance":"986.32"},       // 3
                                {"balance":"988.96"},       // 4
                                {"balance":"980.26"},       // 5
                                {"balance":"980.16"}        // 6 MAX 
                            ],

                "A25005923":[
                                {"balance":"1001"},         // 1
                                {"balance":"1000.16"},      // 2
                            ]           
            }

I don't know how many AXXXXXXXX elements and how many elements it contains. 我不知道有多少AXXXXXXXX元素及其包含的元素数量。 To get A elements I have use the code below: 要获得A元素,我使用下面的代码:

var accounts = [];
for(var key in r.co) {
   if(r.co.hasOwnProperty(key)) {
      accounts.push(key);
   }
}

Now I know my A elements length 现在我知道我的A元素长度了

var accounts_length = accounts.length; // 3 for example

Now I need to know max length of elements in A: 现在我需要知道A中元素的最大长度:

var accounts_elements_length = [];

    for (var c = 0; c < accounts.length; c++) {   

          accounts_elements_length.push(r.co[accounts[c]].length);
    }

    var accounts_elements_length_max = accounts_elements_length.max() // 6 For example

How can I get this output array for the chart? 如何获取图表的输出数组?

var outputData = [{
                        count:      1,
                        A20018425:  1390.31,
                        A25005922:  1000,
                        A25005923:  1001
                    }, {
                        count:      2,
                        A20018425:  1304.11,
                        A25005922:  1000.86,
                        A25005923:  1000.16
                    }, {
                        count:      3,
                        A20018425:  1188.11,
                        A25005922:  986.32
                    }, {
                        count:      4,
                        A20018425:  1421.71,
                        A25005922:  988.96
                    }, {
                        count:      5,
                        A25005922:  980.26
                    }, {
                        count:      6,
                        A25005922:  980.16
                    }
        }];

Thanks! 谢谢!

Just combined your algorythms: 刚结合你的algorythms:

var outputData = [];
for (var key in r.co) {
   if (r.co.hasOwnProperty(key)) {
      var account_length = r.co[key].length;
      for (var c = 0; c < account_length; c++) {
          if (outputData[c] === undefined) {
              outputData[c] = { count: c+1 };
          }
          outputData[c][key] = r.co[key][c].balance;
    }
   }
}
console.log(outputData);

jsfiddle 的jsfiddle

Code : 代码:

var outputData = [];
for (var i = 0; i < 6; i++) { // filter should be - i < accounts_elements_length_max
    var temp = {
        'count': i + 1
    };

    for (var j = 0; j < accounts.length; j++) {
        if (r[accounts[j]][i]) temp[accounts[j]] = r[accounts[j]][i].balance;
    }

    outputData.push(temp);
}

Note that i hard code the accounts_elements_length_max(6). 请注意,我硬编码accounts_elements_length_max(6)。

Output that i get: 我得到的输出:

[{
    "count": 1,
    "A20018425": "1390.31",
    "A25005922": "1000",
    "A25005923": "1001"},
{
    "count": 2,
    "A20018425": "1304.11",
    "A25005922": "1000.86",
    "A25005923": "1000.16"},
{
    "count": 3,
    "A20018425": "1188.11",
    "A25005922": "986.32"},
{
    "count": 4,
    "A20018425": "1421.71",
    "A25005922": "988.96"},
{
    "count": 5,
    "A25005922": "980.26"},
{
    "count": 6,
    "A25005922": "980.16"}]​

Working fiddle 工作小提琴

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM