最近投了个简历,然后给我回了个链接,要求做三道编程题,简单记录一下
提交按钮防止重复
简单来说,就是题目模拟了一个 submit 提交接口,实际上循环嵌套了几下
大致应该是这样?submit 方法忘了,反正就是一个简单的 log 输出,要求我们完善handleSubmit 避免 1 s 内重复提交
function handleSubmit(func,timeout){ }
const submit = handleSubmit(submit方法,1000)
submit(1); submit(2);
setTimeout(() => { submit(3); setTimeout(() => { submit(4); .... setTimeout(() => submit(6), 800); } }
|
还是第一次做前端编程题,导致这个题我一开始懵完了,写了二十分钟,感觉实际上简单,判断一下时间,如果在冷却就不执行。但是我之前直接用的封装好的 <Button> 组件,想了半天,反正是通过时间进行判断,只需要接受参数就好了,不过当时忘了 timeout 这个参数… 还在想时间怎么办,最后再回来看一下这个方法,写的就快了
function handleSubmit(func, timeout) { let isCooling = false; return function (…args) { if (isCooling) return; func.apply(this, args); isCooling = true; setTimeout(() => { isCooling = false; }, timeout); }; }
|
每次判断下是否在冷却,如果不再冷却,就执行
判断数据类型是否为空
题目:判断数据类型是否为空,其中空格字符串以及全空格字符串同样视为空
const isEmpty = (value) => {
};
console.log(isEmpty(undefined)); console.log(isEmpty(null)); console.log(isEmpty(0)); console.log(isEmpty(' adc')); console.log(isEmpty(' ')); console.log(isEmpty({})); console.log(isEmpty([]));
|
这个就比较简单了,只需要判断一下,稍微难的可能就是处理空格字符串,但是和 java 的方法还是一样的,都是 trim()。

const isEmpty = (value) => { if (Array.isArray(value)) { if(value.length === 0){ return true; } }
if (typeof value === 'string') { if(value.trim() === ''){ return true; } } if (typeof value === 'number') { if(value === 0 || isNaN(value)) { return true; } }
if (typeof value === 'object') { if(value === null || Object.keys(value).length === 0){ return true; } } if(value === null || value ===undefined){ return true; } return false; };
|
参数值提取
这个倒是不算难… 毕竟我的项目里也是遇到了,无非是 split 分割,然后处理键值。忘了具体的是啥了…. 反正也挺好写的
const getURLParam = (url, param) => { const queryStr = url.split('?')[1]; if (!queryStr) return null;
const paramArr = queryStr.split('&'); const result = [];
paramArr.forEach(item => { const [key, value] = item.split('='); const decodeKey = decodeURIComponent(key); const decodeValue = value ? decodeURIComponent(value) : '';
if (decodeKey === param) { try { result.push(JSON.parse(decodeValue)); } catch (e) {
result.push(decodeValue); } } });
if (result.length === 0) return null; return result.length === 1 ? result[0] : result; };
|