javascript – 循环多维数组,为Google Charts生成多维数组

前端之家收集整理的这篇文章主要介绍了javascript – 循环多维数组,为Google Charts生成多维数组前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我目前正在尝试使用Google图表生成报告.

我从我的node.js服务器端代码中的MysqL DB中提取信息,并使用socket.io将其传递到多维数组中的客户端,如下所示:

[ [ 'ANSWERED','477',728 ],[ 'BUSY',48 ],[ 'NO ANSWER',277 ],[ 'ANSWERED','478',88 ],24 ],56 ] ]

因此,我正在循环遍历该数组并尝试提取值,因此它采用以下格式的Google图表:

[ ['477',728,48,[ '478',88,24,56]]

我无法将其转换为这种格式,并且很难找到这样做的方法,因此我可以将此信息插入到Google表的多维数组中并生成报告.

到目前为止,我目前的代码是:

socket.on("sql",function (valueArr) {
        google.charts.load('current',{
            packages : ['corechart']
        });
        google.charts.setOnLoadCallback(drawMaterial);
        function drawMaterial() {
            var data = [];
            var Header = ['Call Disposition','Answered'];
            data.push(Header);
            for (i in valueArr) {
                var index = 0;
                var foundIndex = false;
                var agent = valueArr[i][1];
                var callcount = valueArr[i][2];
                for (var i in data) {
                    var dataElem = data[i];
                    if (dataElem[0] === agent) {
                        index = i;
                        foundIndex = true;
                        data[index][i] = callcount;
                    }
                }
                if (foundIndex === false) {
                    var chanar = new Array(agent);
                    data.push(chanar);
                }
            }

            console.log(data);

            var options = {
                title : 'Call Disposition',hAxis : {
                    title : 'Agents',minValue : 0,},vAxis : {
                    title : 'Disposition Number'
                },isStacked : true
            };
            var chartdata = new google.visualization.arrayToDataTable(data);
            var material = new google.visualization.ColumnChart(document.getElementById('chart'));
            material.draw(chartdata,options);
        }
    });

其中输出以下多维数组:

[['Call Disposition','Answered'],['477',277 ]]

我的想法是我需要多维数据数组最终看起来像(注意标题可以在代码中更改它只是由于当前正在使用的值来构建它):

[['Call Disposition','Answered','Busy','Failed'],56]]

解决方法

编辑:这使用函数和临时变量temp来收集值.每隔三个项目,一个新数组被推送到结果数组.
function x(data) {
    var r = [],temp;
    data.forEach(function (a,i) {
        if (!(i % 3)) {
            temp = [a[1]];
            r.push(temp);
        }
        temp.push(a[2]);
    });
    return r;
}

var data = [['ANSWERED',728],['BUSY',48],['NO ANSWER',277],['ANSWERED',88],24],56]],result = [['Call Disposition','Failed']].concat(x(data));

document.write('<pre>' + JSON.stringify(result,4) + '</pre>');

猜你在找的JavaScript相关文章