怎么取代这串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