美文网首页
阿里前端面试题(6)

阿里前端面试题(6)

作者: 正义国王 | 来源:发表于2020-03-05 13:05 被阅读0次

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。

相关文章

网友评论

      本文标题:阿里前端面试题(6)

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