解决if-else嵌套地狱

2,159 阅读1分钟

前言

最近一个功能需求,给定n个可能为空的日期时间字符串,取其中不为空的最小值。

第一版解决方法(治标不治本)

var a, b;
if (a || b) {
	let temp = 0;
	if (a) {
    	if (b) {
        	temp = +new Date(a) > +new Date(b) ? +new Date(b) : new Date(a); 
        } else {
        	temp = +new Date(a)
        }
    } else {
    	temp = +new Date(b)
    }
    ...
    你的处理逻辑
    ...
} else {
	...
    你的处理逻辑
    ...
}

终极解决方法

let arr = [a, b, c]
let timeStamp = 0
arr.forEach(item => {
    if (item) {
        if (timeStamp) {
            timeStamp = +new Date(item) > timeStamp ? timeStamp : +new Date(item);
        } else {
            timeStamp = +new Date(item);
        }
    }
})
...
你的处理逻辑
...

最后

感谢同事提供的思路,当时陷入嵌套地狱的时候,就考虑过一次,没想到解决方法,这次解决了,感谢感谢。