寻找优雅如果

时间:2017-06-23 16:28:10

标签: javascript

如果有更优雅的方式吗?

   if (err.code === 'CONFLICT-GROUP-GENERAL' ||
    err.code === 'CONFLICT-USER-GENERAL' ||
    err.code === 'CONFLICT-FORM-GENERAL' ||
    err.code === 'CONFLICT-PROJECT-GENERAL' ||
    err.code === 'CONFLICT-TEMPLATE-GENERAL') {}

2 个答案:

答案 0 :(得分:6)

我最好使用包含所有代码的数组,然后使用private static final String GMT = "GMT"; private static final String DATE_FORMAT_ISO = "yyyyMMdd'T'HHmmss"; public static Calendar isoToCalendar(final String inputDate) { Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone(GMT)); try { SimpleDateFormat dateFormat = new SimpleDateFormat(DATE_FORMAT_ISO, Locale.US); dateFormat.setTimeZone(TimeZone.getTimeZone(GMT)); Date date = dateFormat.parse(inputDate); calendar.setTime(date); } catch (ParseException e) { Log.e("TAG",e.getMessage()); } return calendar; } 检查它是否大于indexOf

-1

答案 1 :(得分:3)

这个技巧在我看来更优雅(使用数组和indexOf):

var conflicts = ['CONFLICT-GROUP-GENERAL',
                    'CONFLICT-USER-GENERAL',
                    'CONFLICT-FORM-GENERAL',
                    'CONFLICT-PROJECT-GENERAL',
                    'CONFLICT-TEMPLATE-GENERAL'];

if (conflicts.indexOf(err.code) !== -1) {
    doSomething();   
}

如果您使用的是ES7,则可以使用includes()代替indexOf。这将更具“表现力”:

var conflicts = ['CONFLICT-GROUP-GENERAL',
                    'CONFLICT-USER-GENERAL',
                    'CONFLICT-FORM-GENERAL',
                    'CONFLICT-PROJECT-GENERAL',
                    'CONFLICT-TEMPLATE-GENERAL'];

if (conflicts.inclues(err.code)) {
    doSomething();
}

请注意,includes()不会被所有浏览器支持。

修改

另一种选择:使用switch。这样:

switch (err.code) {
    case 'CONFLICT-GROUP-GENERAL',:
    case 'CONFLICT-USER-GENERAL',:
    case 'CONFLICT-FORM-GENERAL',:
    case 'CONFLICT-PROJECT-GENERAL',:
    case 'CONFLICT-TEMPLATE-GENERAL':
        doSomething();
        break;
}

doSomething()等于每个err.code中的指定字符串之一时,上面的代码将执行case函数。