【发布时间】:2018-01-03 09:48:34
【问题描述】:
您好,我有一个 json 数据如下:
{
"details":
{
"data1":
{
"monthToDate":1000,
"firstLastMonth":"December",
"firstLastMonthAmount":5000,
"secondLastMonth":"November",
"secondLastMonthAmount":12000
},
"data2":
{
"monthToDate":4000,
"firstLastMonth":"December",
"firstLastMonthAmount":10000,
"secondLastMonth":"November",
"secondLastMonthAmount":15000
},
"data3":
{
"monthToDate":2000,
"firstLastMonth":"December",
"firstLastMonthAmount":8000,
"secondLastMonth":"November",
"secondLastMonthAmount":12000
}
}
}
我在下面有打字稿 if 语句,
....
Object.values(data.details.data1).map(obj => {
if (obj === 'January') {
xAxisTranslatedArray.push(this.JAN);
} else if (obj === 'February') {
xAxisTranslatedArray.push(this.FEB);
} else if (obj === 'March') {
xAxisTranslatedArray.push(this.MAR);
} else if (obj === 'April') {
xAxisTranslatedArray.push(this.APR);
} else if (obj === 'May') {
xAxisTranslatedArray.push(this.MAY);
} else if (obj === 'June') {
xAxisTranslatedArray.push(this.JUN);
} else if (obj === 'July') {
xAxisTranslatedArray.push(this.JUL);
} else if (obj === 'August') {
xAxisTranslatedArray.push(this.AUG);
} else if (obj === 'September') {
xAxisTranslatedArray.push(this.SEP);
} else if (obj === 'October') {
xAxisTranslatedArray.push(this.OCT);
} else if (obj === 'November') {
xAxisTranslatedArray.push(this.NOV);
} else if (obj === 'December') {
xAxisTranslatedArray.push(this.DEC);
}
});
我正在使用 lodash、highcharts 和 i18n 翻译。所以我的每个this.MONTH 都是 i18n 键。我无法直接传递这些值,因为无法翻译它们。所以我需要将每个值推送到一个数组并传递到 highchart 的 X 轴。我的问题基本上是当我看到 if else 语句时,它看起来太长而且有点重复。这里有什么捷径吗?在此先感谢各位。
【问题讨论】:
-
obj的值可能与一个月不同吗? -
删除
if-else并使用switch-case -
我不明白。这似乎是
switch-case的完美案例。唯一的答案,说明这一点,被否决和删除?为什么?! -
@wλnnλhug:我想说 switch-case 过于冗长,因为它仍然需要多次调用
xAxisTranslatedArray.push。 -
@Cerbrus 虽然我同意你关于冗长部分的看法,但你可以将代码减少到一次推送调用,使用变量来存储
switch-case定义的值。
标签: javascript typescript if-statement highcharts lodash