2017.8.1 拼多多前端笔试题

题目:编写一个函数实现对Object,Array,Boolean,Number,String这五种主要数据类型进行值复制。
网上搜到的参考解答:Object,Array,Boolean,Number,String分为三种情况:普通变量,Array,Object ,使用递归调用方式解题
function clone(Obj){
    var buf;
    if(Obj instanceof Array){
         buf = []; //创建一个空数组
         var i = Obj.length;
         while(i--){    
             buf[i] = clone(Obj[i]);
        }
        return buf;
    }
    else if (Obj instanceof Object) {
        buf = {}; //创建一个空对象
        for(var k in Obj){
             buf[k] = clone(Obj[k]);
         }
         return buf;
     }
     else {
        return Obj; //普通对象直接赋值
     }
}
#前端工程师#
全部评论
let key function isArray(arr) { return Array.isArray(arr) || arr instanceof Array } function isObject(obj) { return ({}).toString.call(obj) === '[object Object]' } let _extends = function (target, sources, deep) { for (key in sources) if (deep && isObject(sources[key]) || isArray(sources[key])) { if (isObject(sources[key]) && !isObject(target[key])) target[key] = {} if (isArray(sources[key]) && !isArray(target[key])) target[key] = [] _extends(target[key], sources[key], deep) } else if (sources[key] != null) target[key] = sources[key] } // 第一个参数为boolean表示是否深复制 // 没有时,默认为浅复制 // 深复制:(true, target, sources1, sources2, ...) // 浅复制:(target, sources1, sources2, ...) export const extend = function (target) { let deep, args = Array.from(arguments).slice(1) if (typeof target == 'boolean') { deep = target target = args.shift() } args.forEach(ele => _extends(target, ele, deep)) return target }
点赞 回复
分享
发布于 2017-08-02 10:49
==我就是想这么写的说,可惜时间不够了 ,哭瞎
点赞 回复
分享
发布于 2017-08-01 21:59
淘天集团
校招火热招聘中
官网直投
个人觉得编程题简单了点,前面的问的细又广不好拿分,不过前端可能是这个套路
点赞 回复
分享
发布于 2017-08-01 22:32
直接JSON行吗
点赞 回复
分享
发布于 2017-08-01 22:51
function clone(obj){ var buf; if(obj instanceof Object){ buf={}; for(var key in obj){ if(obj[key] instanceof Object){ buf[key]=clone(obj[key]); }else{ buf[key]=obj[key]; } } return buf; }else if(obj instanceof Array){ buf=[]; for(var i=0;i<obj.length;i++){ if(obj[i] instanceof Array){ buf[i]=clone(obj[i]); }else{ buf[i]=obj[i]; } } return buf; }else{ buf=obj; } } var obj={name:"aaa",cons:{age:22}}; console.log(clone(obj));
点赞 回复
分享
发布于 2017-08-02 09:40
求前端题目,大佬。 个人见解:这个题目丢了不应该啊,你是不是把深度克隆忘了?[手动滑稽~]
点赞 回复
分享
发布于 2017-08-02 12:35
楼主,收到面试了吗
点赞 回复
分享
发布于 2017-08-06 23:45
你们都有面试通知么   
点赞 回复
分享
发布于 2017-08-07 11:07

相关推荐

1 23 评论
分享
牛客网
牛客企业服务