当前位置: 首页 > 面试经验 >

游卡前端笔试9.6

优质
小牛编辑
184浏览
2023-03-28

游卡前端笔试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))

#游卡#
 类似资料: