2019.7.2前端面试总结

269 阅读2分钟
1.假如有1023个苹果,需要放在10个箱子中,请问如何装箱才能满足;当满足需要任意(小于等于1023)个苹果时,只需要拿给客户若干个箱子而不需要拆想。
2.JS实现下面逻辑,如:920=900+20,241=200+40+1
3.将下面数组转换为树形结构
const data = [
    { id: 1, name: "办公管理", pid: 0 },
    { id: 2, name: "请假申请", pid: 1 },
    { id: 3, name: "出差申请", pid: 1 },
    { id: 4, name: "请假记录", pid: 2 },
    { id: 5, name: "系统设置", pid: 0 },
    { id: 6, name: "权限管理", pid: 5 },
    { id: 7, name: "用户角色", pid: 6 },
    { id: 8, name: "菜单设置", pid: 6 },
];

function toTree(data) {
    // 删除所有children,以防止多长调用
    data.forEach(item => {
        delete item.children;
    });

    // 将数据存储为 以id为key的map索引数据列
    const map={};
    data.forEach(item => {
        map[item.id]=item;
    })
    const list=[];
    data.forEach(item => {
        // 以当前遍历项,的pid,去map对象中找到索引的id
        let parent=map[item.pid];
        // 好绕啊,如果找到索引,那么说明此项不在顶级当中,那么需要把此项添加到,他对应的父级中
        if(parent) {
            (parent.children || (parent.children=[])).push(item);
        } else{
            //如果没有在map中找到对应的索引ID,那么直接把 当前的item添加到 list结果集中,作为顶级
            list.push(item);
        }
    })
    return list;
}
console.log(toTree(data))

详解:blog.csdn.net/u013373006/…

4.var str = "a bc",去掉str中的空格
/*
*\s:匹配任何空白字符,包括空格、制表符、换页符等等。等价于 [ \f\n\r\t\v]。注意 Unicode 正则表达式会匹配全角空格符。
*i	执行对大小写不敏感的匹配。
*g	执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。
*/
var str = "a bc ";
console.log(str.replace(/\s/ig,''))
5.seTimeout实现setInterval
/*
* 调用函数
* 参数分为:truefalse;
* 参数说明:传入true实现setInterval()功能;传入false取消setInterval()功能
* */
countTimer(true)
var i = 0
function countTimer(flag) {
    if(flag) {
        var timer=setTimeout(function(){
            i+=1;
            console.log("cl", i);
            countTimer(true);
        }, 2000);
    } else {
        clearTimeout(timer);
    }
}
6.用js实现随机选取10--100之间的10个数字,存入一个数组,并排序。
function getSort(start, end, len) {
    let list = [];
    function getRandom(start, end) {
        var num = end - start;
        return Math.floor(Math.random() * num + start);
    }
    for(let i=0; i<len; i++) {
        list.push(getRandom(start, end));
    } 
    return list;
}
console.log(getSort(10, 100, 10).sort())