阿里前端面试题(6)

0301

(1)编程题1

  • (1)使用递归
function valFilter(obj) {
  for(let attr in obj){
    if(Object.prototype.toString.call(obj[attr]) === "[object Object]"){
      valFilter(obj[attr]);
    }
    else if(obj[attr] === null){
      delete obj[attr]
    }
  }
  return obj;
}




(2)编程题2

  • (1)Set
Array.prototype.unique = function(){
  let rawArr = this;
  return Array.from(new Set(rawArr))
};
  • (2)最坏为 O(n^2)
Array.prototype.unique = function() {
  let rawArr = this;
  let resultArr = [];
  for (let i = 0; i < rawArr.length; i++) {
    if (resultArr.indexOf(rawArr[i]) < 0) {
      resultArr.push(rawArr[i]);
    }
  }
  return resultArr;
};
  • (3)与2.类似
Array.prototype.unique = function() {
  let rawArr = this;
  return rawArr.filter((item,index)=>{
    return rawArr.indexOf(item) === index
  })
};




(3)编程题3

答案:1 [Function: a]

为什么 a 的值没有改变呢?

a(); 
var b = function a(x) {
  console.log("hello")
}
//ReferenceError: a is not defined
//等号后的函数不提升

补充

  1. 编译型语言和解释型语言
    编译型语言编译一次生成可执行文件,如C,C++;而解释型语言是一边编译一边执行,不生成可执行文件,但需要相应的解释器,如python,JavaScript。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 目前Python主要应用领域: 云计算: 云计算最火的语言, 典型应用OpenStack WEB开发: 众多优秀的...
    Clemente阅读 977评论 0 1
  • TITLE: 编程语言乱炖 码农最大的烦恼——编程语言太多。不是我不学习,这世界变化快! 有时候还是蛮怀念十几、二...
    码园老农阅读 5,367评论 2 35
  • 是谁孤单了寂寞 是谁温柔了软弱 是谁誓言了承诺 是谁失魂了落魄 2012.01.21
    佴茈玖玖阅读 160评论 0 0
  • 这片土地是我出生的地方,随着时间的流逝,它也慢慢改变了最初的模样,我以前一直觉得那一天不会到来,而若今夕,物是人非...
    萧左阅读 234评论 0 0
  • 21世纪的生活日益成为生活在媒体城市中的生活,媒体与城市空间的融合,使当代城市成为“媒体 - 建筑复合体”,产生了...
    专吃小可爱阅读 4,842评论 0 4