美文网首页
js前端面试题(每日两道2)

js前端面试题(每日两道2)

作者: 张凯斯 | 来源:发表于2018-02-25 22:56 被阅读0次

    1.判断两个矩形是否重叠

    用一个对象的数据来表示一个矩形的位置和大小:

    {x:100,y:100,width:150,height:250}

    它表示一个宽为 150 高为 250 的矩形在页面上的 (100, 100) 的位置。

    请你完成一个函数 isOverlap 可以接受两个矩形作为参数,判断这两个矩形在页面上是否重叠。

    答案:

    constrect1 = {x:100,y:100,width:100,height:100}

    constrect2 = {x:150,y:150,width:100,height:100}

    isOverlap(rect1, rect2)// => true

    const isOverlap = (rect1, rect2) => {

        let rect1Xmax=rect1.x+rect1.width;

        let rect1Ymax=rect1.y+rect1.height;

        let rect2Xmax=rect2.x+rect2.width;

        let rect2Ymax=rect2.y+rect2.height;

        if(rect1.x<rect2.x&&rect2.x<rect1Xmax||rect2.x<rect1.x&&rect1.x<rect2Xmax){
            if(rect1.y<rect2.y&&rect2.y<rect1Ymax||rect2.y<rect1.y&&rect1.y<rect2Ymax) {
                return true;
            }
             return false;
        }
         return false;
    }

    2.safeGet

    有时候我们需要访问一个对象较深的层次,但是如果这个对象某个属性不存在的话就会报错,例如:

    var data = {a: {b: {c:'ScriptOJ'} } }

    data.a.b.c// => scriptoj

    data.a.b.c.d// => 报错,代码停止执行

    console.log('ScriptOJ')// => 不会被执行

    请你完成一个 safeGet 函数,可以安全的获取无限多层次的数据,一旦数据不存在不会报错,会返回 undefined,例如:

    var data = {a: {b: {c:'ScriptOJ'} } }

    safeGet(data,'a.b.c')// => scriptoj

    safeGet(data,'a.b.c.d')// => 返回 undefined

    safeGet(data,'a.b.c.d.e.f.g')// => 返回 undefined

    console.log('ScriptOJ')// => 打印 ScriptOJ

    答案

    const safeGet = (data, path) => {

        if(!path) return undefined;

        var arr = path.split(".");

        try{

            while(arr.length){

            data = data[arr.shift()];

            }

        }catch(err){

            return undefined;

        }

        return data;

    }

    相关文章

      网友评论

          本文标题:js前端面试题(每日两道2)

          本文链接:https://www.haomeiwen.com/subject/zcgqxftx.html