【问题标题】:Highcharts series data not workingHighcharts 系列数据不起作用
【发布时间】:2017-09-07 06:04:45
【问题描述】:

我现有的数组如下:

"Issues": [{
    "Id": null,
    "Key": null,
    "Values": [{
        "Key": "Display Name",
        "Value": "Rya"
    }, {
        "Key": "UserName",
        "Value": "RH"
    }, {
        "Key": "Count",
        "Value": "350"
    }]
}, {
    "Id": null,
    "Key": null,
    "Values": [{
        "Key": "Display Name",
        "Value": "Mike"
    }, {
        "Key": "UserName",
        "Value": "ML"
    }, {
        "Key": "Count",
        "Value": "90"
    }]
}]

我想要的数组:

[{
    name: 'Rya', 
    value: 350
}, {
    name: 'Mike', 
    value: 90
}]

我尝试了什么:

Data.Issues.map(o=> o.Values.reduce((acc, {Key, Value}) =>
                                       (acc[Key] = Value, acc), {}));

this.donughtChartData1 = this.donughtChartData.map( ({UserName, Count}) => 
    ({ name: UserName, value: Count}) );

但这给了我:

[{
    "name": "RHanney",
    "value": "350"
}, { 
    "name": "MLuckenbill", 
    "value": "90"
}]

这有引号,如果有引号,我的 highcharts 不起作用。

【问题讨论】:

    标签: json ecmascript-6 underscore.js lodash


    【解决方案1】:

    在代码的最后一行,在Count 之前添加一个+,以便将其转换为数字:

    // ...
    ({ name: UserName, value: +Count}) );
    

    如何添加一个字符可以带来解决方案:-)

    【讨论】:

    • 是的:)。非常感谢您的支持。
    • 一个小问题。实际上我需要使用“显示名称”而不是“用户名”。但由于它之间有空间,我无法找到如何使用它。
    • 你的意思是代替name? (输出对象中没有userName)。如果将名称括在引号中,则可以在属性名称中使用空格:({ "Display Name": UserName, value: +Count })
    • 我的意思是“显示名称”字段,而不是下面的 UseName。this.donughtChartData1 = this.donughtChartData.map( ({"Display Name", Count}) => ({ name: "Display名称", 值: Count}) );
    • 我不明白:“显示名称”不是您原始数据中的键,而是文字值。您希望该文字值始终在您的输出中,即所有带有name: "Display Name" 的对象?我不明白。你能根据之前给出的样本数据提供想要的输出吗?
    猜你喜欢
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-24
    相关资源
    最近更新 更多