游卡前端笔试9.6
9月6日19:00到20:30
90分钟,10道单选,10~15道多选
2道简答题:
1)什么是事件委托
2) ajax, axios, jsonp分别是什么
编程题:
1. 在一堆牌中,把第一张牌放到桌面,再把牌堆的第二张牌放到牌堆底部,然后再把牌堆新的第一张牌放入桌面,以此类推。
最后桌子上牌的顺序是:[1,2,3,4,5,6,14,8,9,10,11,12,13], 原来牌堆的顺序是 [1,12,2,8,3,11,4,9,5,13,6,10,14]
问:
已知桌面上牌的顺序是 [1,2,3,4,5,6,14,8,9,10,11,12,13],求原来牌堆的顺序是什么?
function reverse(arr){ let len = arr.length; if (len <= 2) return arr; let res = []; for (let i = len - 1; i >=0; --i) { res.unshift(arr[i]); if (i == 0) break; if (res.length != 1){ let last = res.pop(); res.unshift(last); } } return res; }
2. 已知有一个数组 [0,2,3,5,7,8,10]
输出:“0,2~3,5,7~8,10”
或者:输入 [0, 2,3,4,5,9, 11,12,13,15]
请输出: “0,2~5,9,11~13,15”
let num = [0,2,3,5,7,8,10] function simplifyStr( num ) { let res =""; for (let i = 0; i < num.length; ++i) { if ((num[i] + 1) != num[i+1]){ res+=num[i]+','; }else{ let j = i; res+=num[i]+'~'; while(j < num.length && (num[j]+1) == num[j+1]) j++; res+=num[j]+','; i = j; } } res = res.substring(0, res.length-1); return res; } console.log(simplifyStr(num))