JavaScript 数组。先进的

标签 javascript arrays sorting hasownproperty

我的 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
                            ]           
            }

不知道有多少个AXXXXXXXX元素,包含了多少个元素。 要获取 A 元素,我使用以下代码:

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

现在我知道我的 A 元素长度

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

现在我需要知道 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

如何获取图表的输出数组?

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

谢谢!

最佳答案

只需结合您的算法:

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

关于JavaScript 数组。先进的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12973220/

相关文章:

javascript - this.title 不是数据表上的函数

javascript - 连接两个 JSON 对象

arrays - 如何在perl中快速比较数组

PHP - 如果值存在于对象数组中

java - 如何将此插入排序从升序更改为降序 - java

javascript - Peg.js 区分缺失值和空格

JAVA - 使用循环初始化锯齿状 3D 数组?

sorting - cakephp3-表格排序不起作用

将三个数字中的最小到最大排序

javascript - 为什么我的 javascript 代码不会将值从一个 div 传递到另一个 div?