1

このフィドルでは、一連の値と相対累積合計を切り替えるボタンを作成しようとしました。

私が使用したhighchartオプションは

exporting: {
    buttons: {
        'exportTo': {
            _id: 'exportTo',
            symbol: 'diamond',
            text: 'Show Cumulative',
            onclick: function () {
                if (!cumulative) {
                    this.series[0].setData(cumcum(data1));
                    this.series[1].setData(cumcum(data2));
                    cumulative = true;
                } else {
                    this.series[0].setData(data1);
                    this.series[1].setData(data2);
                    cumulative = false;
                }
            }
        }
    }
}

ただし、いくつかの点を選択してから選択しようとするとShow Cumulative選択したばかりの点の後の点が失われていることがわかり、もう一度クリックすると戻ってきます (など)。

皆さんはこれをどう説明しますか?それはおそらく簡単ですが、私はJSが初めてです

4

1 に答える 1

1

問題はcumcum機能にあります。

ポイントを選択すると、配列内の項目が次のように数値からオブジェクトに変更されます。

[ 7, 6.9, 9.5, { selected: true, y: 14.5 }, 18.2, ... ]

したがって、アキュムレータをdata[i]数値かオブジェクトかを検出し、それに応じて動作するものに変更する必要があります。

for (var i = 1; i < data.length; i++) {
    if (typeof data[i] === 'object') {
        res[i] = res[i - 1] + data[i].y;
    } else {
        res[i] = res[i - 1] + data[i];
    }
}
于 2013-08-16T09:37:02.563 に答える