天天都成长一点系列(一)

天天都成长一点系列(一)

今天同事咨询了我这样一个问题
有俩个下拉选项 有关联性的 意思就是a下拉不选 b下拉也选不了 而后提交的时候 若是a、b都选了 就向后台传a_b 若是b没选 就向后台传a 都没选 就向后台传null 并附上代码 让我认为对错或者有没有更优的写法
代码以下
let a = 'a'
let b = 'b'
const id = b ? \${a}\_${b}` : a ? a : null`
首先 这样写是没问题的 可是可读性就狠差 甚至我以为都不如用if else来的更直观 因而我加以改进
代码以下
const id = (a && b) ? \${a}\_${b}` : (a || null)`
实话 我我的认为我这样写可读性能稍微好一丢丢 勉强算改进
可是 上述俩种写法都面临着一个严重的问题 就是可扩展性都太差 譬如又多了一个下拉选择 那么 对于上述的俩种写法都是致命的打击 因此 有没有更优的写法呢 答案固然是有
代码以下
let c = 'c'
const id = \[a, b, c\].reduce((id, item, index) \=> {性能

if (item) {
    id = id ? \`${id}\_${item}\` : item
}
return  id

`}, '') || null'
这是我暂时能想到的最优的写法 优势在于 就算再增长下拉选择 譬如c 也不须要改动原有的代码 还有 就是若是下拉选项变成非关联性的 也是不须要改动代码的
比较气的是 同事并无采纳 缘由是 拼个id须要写个方法? 其实 我以为真的有必要 正所谓前人栽树后人乘凉 否则真的要被后人骂的 因此说该勤快的地方仍是要勤快的 须要多考虑的地方也是应该多考虑的 这是对后人的负责 也是对本身的负责 固然还能自我提升 何乐而不为!!!(这代码怎么粘成这个鬼样子)code

相关文章
相关标签/搜索