怎么取代这串if ?

怎么取代这串if ?

}

export function batteryError(item) {

let data = item.batteryDataRecord

let code = []

if (data.chtProt === 1) {

code.push(1)

}

if (data.scProt === 1) {

code.push(2)

}

if (data.docProt === 1) {

code.push(3)

}

if (data.cocProt === 1) {

code.push(4)

}

if (data.pvUvProt === 1) {

code.push(5)

}

if (data.cvUvPro === 1) {

code.push(6)

}

if (data.pvOvProt === 1) {

code.push(7)

}

if (data.cvOvProt === 1) {

code.push(8)

}

if (data.colFault === 1) {

code.push(9)

}

if (data.dltProt === 1) {

code.push(10)

}

if (data.cltProt === 1) {

code.push(11)

}

if (data.dhtProt === 1) {

code.push(12)

}

if (item.compartmentDataRecordVo.batSwOff === 1) {

code.push(13)

}

if (item.compartmentDataRecordVo.batCommOk === 1) {

code.push(14)

}

return code

}

这里的每个if里的条件都要走一遍,但不想写这么多if ,如何修改?


回答:

let num = 1;

['chtProt', 'scProt', 'docProt', 'cocProt', 'pvUvProt', 'cvUvPro', 'pvOvProt', 'cvOvProt', 'colFault', 'dltProt', 'cltProt', 'dhtProt'].forEach(key => data[key] === 1 && code.push(num++));

['batSwOff', 'batCommOk'].forEach(key => item.compartmentDataRecordVo[key] === 1 && code.push(num++));


回答:

function batteryError(item) {

let data = item.batteryDataRecord

let code = []

[

data.chtProt,

data.scProt,

data.docProt,

data.cocProt,

data.pvUvProt,

data.cvUvPro,

data.pvOvProt,

data.cvOvProt,

data.colFault,

data.dltProt,

data.cltProt,

data.dhtProt,

item.compartmentDataRecordVo.batSwOff,

item.compartmentDataRecordVo.batCommOk

].map((item, index) => {

if(item === 1) {

code.push(index + 1)

}

})

return code

}


回答:

其实我还喜欢这样写。
过了半年甲方抽风说我要data.chtProt==2或者3。在中国你永远想不到甲方哪天给你提一个“个性化”需求。


回答:

为什么要换掉呢?
这样写有什么问题吗?
你确定以后不会改吗?
一般来说, 前人这么写, 大概率是觉得以后会出现 if(xxx === 1) { code.push(1); dosomething() }

以上是 怎么取代这串if ? 的全部内容, 来源链接: utcz.com/p/935779.html

回到顶部