【问题标题】:Convert Array values into Percentages Javascript将数组值转换为百分比 Javascript
【发布时间】:2017-05-26 03:24:58
【问题描述】:

我有一个引用数组值的饼图。

我想将这些数组值显示为百分比。我该怎么做?

我用来生成这个饼图的插件是chart.js

Javascript 供参考:

success : function (data){
    console.log(data);

    var categoryname = ["Drain", "Building", "Pest", "Broken Utilities", 
    "Littering", "Leakage", "Lighting"];
    var category = [];
    var amount = [];

    for (var i in data) { 
        category.push(categoryname[data[i].Category]);
        amount.push (data[i].CaseNum);
    }
    var config = {
        type: 'pie',
        data: {
            datasets: [{
                data: amount,
                backgroundColor: [
                    "rgba(59, 89, 152, 1)",
                    "rgba(59, 89, 152, 1)",
                    "rgba(59, 89, 152, 1)",
                    "rgba(59, 89, 152, 1)",
                    "rgba(59, 89, 152, 1)",
                    "rgba(59, 89, 152, 1)",
                    "rgba(59, 89, 152, 1)"
                    ],
                label: 'Dataset 1'
            }],
                labels: category
        },
        options: {
            responsive: true
        }
    };
    var ctx = $("#mycanvas");       
    var graph = new Chart(ctx, config);
}

供参考的php:

$query = "SELECT categoryID as 'Category', COUNT(Case.categoryID) as 'CaseNum' 
FROM `Case` WHERE CaseTime BETWEEN DATE_SUB(now(), INTERVAL 6 MONTH) AND 
now() GROUP BY categoryID ORDER BY categoryID";

$result = $conn->query($query);

$data = array();
foreach ($result as $row) {
    $data[] = $row;
}


$conn->close();

print json_encode($data);

饼图图像示例:

【问题讨论】:

  • data: amount 中的amount 值格式是什么?小数点?整数?您可能需要创建函数助手来创建百分比
  • @rachmatsasongko 他们是整数

标签: javascript php html arrays


【解决方案1】:

试试这个

success : function (data){
    console.log(data);

    var integerAmount = [];
    for (var i in data) {
        integerAmount.push(data[i].CaseNum);
    }
    var sum = integerAmount.reduce((a, b) => a + b, 0);
    var categoryname = ["Drain", "Building", "Pest", "Broken Utilities", "Littering", "Leakage", "Lighting"];
    var category = [];
    var amount = [];
    for (var i in data) {
        category.push(categoryname[data[i].Category]);
        amount.push (integerAmount[i]/sum*100+'%');
    }

    // rest of the script
}

这个想法是首先从data 对象中存储整数值。然后将总值相加。最后我们推送实际百分比值并将% 添加到饼图的amount 数据中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-11
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    • 2012-10-17
    • 2021-05-27
    • 2017-06-19
    相关资源
    最近更新 更多