【问题标题】:How to call INDEX values of an array in incremental manner in JavaScript如何在 JavaScript 中以增量方式调用数组的 INDEX 值
【发布时间】:2014-10-14 17:10:00
【问题描述】:

我正在使用 Js 库 (dhtmlx) 创建堆积条形图。 这是我的输出:

json数据格式如下:

var data = [
    { "allocated":"20", "unallocated":"2", "day":"01/01/2014" },
    { "allocated":"12", "unallocated":"0", "day":"02/01/2014" },
    { "allocated":"2", "unallocated":"18", "day":"03/01/2014" },
    { "allocated":"22", "unallocated":"2", "day":"04/01/2014" },
    { "allocated":"3", "unallocated":"13", "day":"05/01/2014" },
    { "allocated":"6", "unallocated":"2.4", "day":"06/01/2014" },
    { "allocated":"6", "unallocated":"2.4", "day":"07/01/2014" },
    { "allocated":"6", "unallocated":"2.4", "day":"08/01/2014" },
    { "allocated":"6", "unallocated":"2.4", "day":"09/01/2014" },
    { "allocated":"6", "unallocated":"2.4", "day":"10/01/2014" },
    { "allocated":"6", "unallocated":"2.4", "day":"11/01/2014" },
    { "allocated":"6", "unallocated":"2.4", "day":"12/01/2014" },
    { "allocated":"6", "unallocated":"2.4", "day":"13/01/2014" },
    { "allocated":"14", "unallocated":"7", "day":"14/01/2014" },
];

但是我设法通过 WEEK 将我的 JSON 数据分组 使用以下方法:

var groupedByWeek = _.groupBy(data, function(item) {
    var dateMoment = moment(item.day,"DD/MM/YYYY");
    weeks = dateMoment.week();
    array = [weeks]
    return array;
});

现在,参考我上传的图片,我成功获得了按周分组的数据。 根据我给定的数据,我从中得到了 3 个数组索引。

Object { 1: Array[4], 2: Array[7], 3: Array[3] }

现在我想将索引 1 设置为我的图表的默认值。然后逐步点击“NEXT”按钮,数组索引不断变化。

简而言之,我想在 X 轴上每周传递数据。有没有办法一一传递数组索引?请帮我。 提前致谢。

我的 html 文件的完整代码:

    <body>
    <div id="chart1" style="width:1020px;height:300px;border:0px solid #000000;">
        <div><a href="#">Next</a></div>
    </div>


<script>

    var barChart1 =  new dhtmlXChart({
        view:"stackedBar",
        container:"chart1",
        value:"#allocated#",
        label:"#allocated#",
        color: "#a24689",
        // gradient:"falling",
        width:40,
        tooltip:{
            template:"#allocated#"
        },

        xAxis:{
            title:"Days",
            template:"#day#",

        },

        yAxis:{
            title:"Hours",
            start:0,
            step:4,
            end:24
        },

        legend:{
            values:[{text:"Compeleted Activities",color:"#a24689"},{text:"Undefined",color:"#F9D544"}],
            valign:"top",
            align:"center",
            width:110,
            layout:"x"
        }
    });

    barChart1.addSeries({
        value:"#unallocated#",
        color:"#F9D544",
        label:"#unallocated#",
        tooltip:{
            template:"#unallocated#"
        }
    });

    var groupedByWeek = _.groupBy(data, function(item) {
        var dateMoment = moment(item.day,"DD/MM/YYYY");
        weeks = dateMoment.week();
        array = [weeks]
        return array;
    });
    console.log(groupedByWeek)

    barChart1.parse(data,"json");
    // console.log(data)

</script>

【问题讨论】:

  • 也许您应该获取 groupedByWeek 操作返回的数据,并根据您选择的索引值从中构造一个新的 json 数据数组。然后将该数组传递给barChart1.parse() 操作。

标签: javascript arrays json charts increment


【解决方案1】:

这个解决方案终于奏效了。

var groupedByWeek = _.groupBy(data, function(item) {
        var dateMoment = moment(item.day,"DD/MM/YYYY");
        return dateMoment.week();

groupedByWeek 的值是数组形式。 可以通过在barChart1.parse(groupedByWeek[1],"json");而不是barChart1.parse(data,"json");传递数组的索引值来完成

终于成功了!

【讨论】:

    猜你喜欢
    • 2012-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-05
    相关资源
    最近更新 更多