che*_*ewi 2 javascript if-statement highcharts typescript lodash
嗨我有一个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
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果下面的陈述,我有打字稿,
....
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);
}
});
Run Code Online (Sandbox Code Playgroud)
我使用lodash,highcharts和i18n翻译.所以我的每一个this.MONTH都是i18n键.我无法直接传递值,因为无法翻译它们.所以我需要将每个值推送到一个数组并传递到highchart的X轴.我的问题基本上是当我看到if else语句看起来太长而且有点重复时.这里有捷径吗?先谢谢你们.
使用单独的地图对象:
const months = {
January: this.JAN,
February: this.FEB,
March: this.MAR,
// etc,
}
Object.values(data.details.data1).forEach(obj => {
if (months[obj]) {
xAxisTranslatedArray.push(months[obj]);
}
});
Run Code Online (Sandbox Code Playgroud)
或者,你可以更换if一个filter:
Object.values(data.details.data1)
.filter(obj => months[obj])
.forEach(obj => xAxisTranslatedArray.push(months[obj]));
Run Code Online (Sandbox Code Playgroud)
另外,请注意我使用的是forEach代替map.map用于修改数组,但您只是在数组上进行迭代.forEach是那里语义正确的选择.
| 归档时间: |
|
| 查看次数: |
106 次 |
| 最近记录: |