遇到一道设计模式的面试题,各位大佬看下如何解决,题目要求是优化这段业务代码
条件是布尔值或者函数返回值,cb 是函数
function runTask() { if(条件A){ cbA() if(条件B){ cbB() } } if(条件C){ cbC() if(条件D){ cbD() } }}
function A() { console.log("execute task A");}function B() { console.log("execute task B");}function C() { console.log("execute task C");}function D() { console.log("execute task D");}function runTask() { const conditionA = () => true; const conditionB = () => false; const conditionC = () => false; const conditionD = () => true; const processFlows = [ [ [conditionA, A], [conditionB, B] ], [ [conditionC, C], [conditionD, D] ] ]; for(const flow of processFlows) { for(const [condition, task] of flow) { if(condition()) task(); else break; } }}
function runTask() { ;( [ [conditionA, cbA], [conditionA && conditionB, cbB], [conditionC, cbC], [conditionC && conditionD, cbD] ] as const ).forEach(([condition, callback]) => condition && callback())}
从题目看不出优化点,有可能是你脱敏的时候搞丢了。
优化的方向有给吗?
我暂时想不出什么优化方案了,蹲一波。
function runTask() { if (条件A) { 条件B ? cbB() : cbA() } if (条件C) { 条件D ? cbD() : cbC() }}
function runTask(params) { const items = [ { validator: (params) => 条件A, func: () => { // cbA }, }, { validator: (params) => 条件A && 条件B, func: () => { // cbB }, }, { validator: (params) => 条件C, func: () => { // cbC }, }, { validator: (params) => 条件C && 条件D, func: () => { // cbD }, }, ]; items.forEach((item) => { if (item.validator(params)) { item.func(); } });}
遇到一道设计模式的面试题,各位大佬看下如何解决,题目要求是优化这段业务代码?条件是布尔值或者函数返回值,cb 是函数
如何将两个方法合并成一个方法 如图parentValues = ['BC', 'BC-SRV', 'BC-SRV-COM'], 想得到的是选中的树组arrSelectedFacets = ['BC-SRV-COM-FTP', 'BC-SRV-COM-TEL'] 如果 BC-SRV-COM 下的子节点都选中,则arrSelectedFacets=['BC-SRV-COM']
在写leetcode每日一题的过程中遇到了一些无法解决的问题。 我进行了多次调试,虽然解决了问题,但是解决的莫名奇妙,也不知道为啥突然就能运行了。。。 题目描述: 给你一个下标从 0 开始的数组 words ,数组中包含 互不相同 的字符串。 如果字符串 words[i] 与字符串 words[j] 满足以下条件,我们称它们可以匹配: 字符串 words[i] 等于 words[j] 的反转字符串
本文向大家介绍PHP经典面试题之设计模式(经常遇到),包括了PHP经典面试题之设计模式(经常遇到)的使用技巧和注意事项,需要的朋友参考一下 设计模式在面试过程中经常会提到,有时候还会让我们举例说明各种设计模式的应用场景。 使用设计模式可以减轻我们的工作量,优化我们的代码。 设计模式非常的多,这里介绍单例模式,工厂模式,组合模式,策略模式4种模式 如果有代码有什么问题或者有更好的方式请告知,谢谢!!
v3的hash模式下有遇到过这个问题吗? 接口返回的地址后面有4个#号键例如(http://*/index.html####NKFDSAFJSKF...) 打开这个地址后就会变成 http://*/index.html#/###NKFDSAFJSKF...(打不开网页) 但是自己拼接的地址: 协议、域名、端口号+/index.html####+${useddata} 打开这个地址后就会变成 htt
直接上代码 我 span 高度是 6px; 如何使 div 高度自适应 span 高度? 目前执行的代码 div 高度是 22.5px