请问下大家这种代码还能优化吗

        if (resState == 8) {//下
            li_one.appendTo("#haved .ul-list");
            li_one.find(".status").html("完场");
        } else if (resState == 9) {
            li_one.appendTo("#haved .ul-list");
            li_one.find(".status").html("推迟");
        } else if (resState == 10) {
            li_one.appendTo("#haved .ul-list");
            li_one.find(".status").html("中断");
        } else if (resState == 11) {
            li_one.appendTo("#haved .ul-list");
            li_one.find(".status").html("腰斩");
        } else if (resState == 12) {
            li_one.appendTo("#haved .ul-list");
            li_one.find(".status").html("取消");
        } else if (resState == 13) {
            li_one.appendTo("#haved .ul-list");
            li_one.find(".status").html("待定");
        }

如上,这种代码执行效率怎么样?萌新求指教蟹蟹

阅读 4.3k
11 个回答

执行效率没什么问题,就是代码简化些吧

var textObj = { 8: "完场", 9: "推迟", 10: "中断", 11: "腰斩", 12: "取消", 13: "待定" }
if (textObj[resState]) {
  li_one.appendTo("#haved .ul-list")
  li_one.find(".status").html(textObj[resState])
}
判断较多条件单一情况 效率肯定是switch case 较强
写法简洁优化可以考虑 object结构 map结构
优化角度考虑问题
https://segmentfault.com/a/11...

先不说switch,为什么li_one.appendTo("#haved .ul-list");不提出来放到外面。。。

newMenthods (resState) {
    const dataList = {
        8: '完场',
        9: '推迟',
        10: '中断',
        11: '腰斩'
    }
    li_one.appendTo("#haved .ul-list")
    li_one.find(".status").html(dataList[resState])
}

执行效率没什么问题,主要是问题是代码缺乏可读性,比如说8,9,10这些太死板。当然可以也优化下常说的优雅问题

var STATE_MAP = {
  8: '完场',
  9: '推迟',
  10: '中断',
  11: '腰斩',
  12: '取消',
  13: '待定'
}

var stateLabel = STATE_MAP[resState]
            
if (stateLabel) {
  li_one.appendTo("#haved .ul-list");
  li_one.find(".status").html(stateLabel);
}

表驱动就可以 可以看下代码大全 表驱动模块介绍。其楼上几个用的就是

这么多判断影响效率吧

jquery该放弃了..走向vue和react的怀抱吧

推荐问题
宣传栏