JS常见面试试题总结【去重、遍历、闭包、继承等】


Posted in Javascript onAugust 27, 2019

本文实例讲述了JS常见面试试题。分享给大家供大家参考,具体如下:

JavaScript面试题总结

1,首先是数组去重算法:给一个数组,去掉重复值

(function() {
    var arr = [1, 2, 3, 3, 4, ];
    function unique() {
      var result = [];
      var tem = {};
      for (var i = 0; i < arr.length; i++) {
        if (!tem[arr[i]]) {
          result.push(arr[i]);
          tem[arr[i]] = 1;
        }
      }
      return result;
    }
})();

2,多维数组,至少3层的遍历,将数组整合一维数组,网上给出的方案

//遍历多维数组
var arr = [1, 2, 3, [4, [5, [6]]]]; // arr.length
Array.prototype.each = function(fn) {
  try {
    //1 目的: 遍历数组的每一项 //计数器 记录当前遍历的元素位置
    this.i || (this.i = 0); //var i = 0 ;
    //2 严谨的判断什么时候去走each核心方法
    // 当数组的长度大于0的时候 && 传递的参数必须为函数
    if (this.length > 0 && fn.constructor == Function) {
      // 循环遍历数组的每一项
      while (this.i < this.length) { //while循环的范围
        //获取数组的每一项
        var e = this[this.i];
        //如果当前元素获取到了 并且当前元素是一个数组
        if (e && e.constructor == Array) {
          // 直接做递归操作
          e.each(fn);
        } else {
          //如果不是数组 (那就是一个单个元素)
          // 这的目的就是为了把数组的当前元素传递给fn函数 并让函数执行
          //fn.apply(e,[e]);
          fn.call(e, e);
        }
        this.i++;
      }
      this.i = null; // 释放内存 垃圾回收机制回收变量
    }
  } catch (ex) {
    // do something
  }
  return this;
}

3,获得url查询参数方案

1)一个是用正则表达式方法

//获取url参数
function GetQueryString(name) {
  var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
  //js match返回的是一数组
  var r = location.search.substr(1).match(reg);
  if (r != null) {
    return r[2];
  } else {
    return null;
  }
}

2)另外一种就是利用split结合数组遍历实现,这个比较容易实现就不贴代码了

4,正则表达式去掉空格

/**去掉字符串前后所有空格*/
function trim(str){
return str.replace(/(^\s*)|(\s*$)/g, "");
}

5,闭包的概念考察

6,原型继承如何实现,原型继承有两种方案

1)第一种是利用prototype

var obj={name:'seven'};
var a=function(){};
a.prototype=obj;
var aa=new a();
alert(aa.name);

 2)第二种是利用apply或者call

function people(name,age){
  //属性
  this.name=name;
  this.age=age;
  //方法
  this.show=function(){
    console.log("my name is"+this.name+" and I am "+this.age+" years old");
  };
}
function student(name,age,school){
  people.apply(this,arguments);
  this.school=school;
  this.showYourself=function(){
    console.log("my name is"+this.name+" and I am "+this.age+" years old"+" my school is"+ this.school);
  };
}
var tom=new student('tom','19','xtu');
tom.showYourself();

7,ES6常用知识点考察

感兴趣的朋友可以使用在线HTML/CSS/JavaScript代码运行工具:http://tools.3water.com/code/HtmlJsRun测试上述代码运行效果。

更多关于JavaScript相关内容可查看本站专题:《JavaScript数学运算用法总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript数组操作技巧总结》、《JavaScript排序算法总结》、《JavaScript遍历算法与技巧总结》、《JavaScript查找算法技巧总结》及《JavaScript错误与调试技巧总结》

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
用javascript控制iframe滚动的代码
Apr 10 Javascript
清除网页历史记录,屏蔽后退按钮!
Dec 22 Javascript
使用firebug进行调试javascript的示例
Dec 16 Javascript
JSuggest自动匹配下拉框使用方法(示例代码)
Dec 27 Javascript
jQuery仿写百度百科的目录树
Jan 03 Javascript
canvas 绘制圆形时钟
Feb 22 Javascript
AngularJS实现图片上传和预览功能的方法分析
Nov 08 Javascript
angularjs实现柱状图动态加载的示例
Dec 11 Javascript
Vue中的基础过渡动画及实现原理解析
Dec 04 Javascript
JavaScrip如果基于url实现图片下载
Jul 03 Javascript
js重写alert事件(避免alert弹框标题出现网址)
Dec 04 Javascript
微信小程序实现聊天室功能
Jun 14 Javascript
微信小程序模板消息限制实现无限制主动推送的示例代码
Aug 27 #Javascript
jQuery实现判断滚动条滚动到document底部的方法分析
Aug 27 #jQuery
JS多个表单数据提交下的serialize()应用实例分析
Aug 27 #Javascript
解决Vue中 父子传值 数据丢失问题
Aug 27 #Javascript
原生javascript自定义input[type=radio]效果示例
Aug 27 #Javascript
基于JS抓取某高校附近共享单车位置 使用web方式展示位置变化代码实例
Aug 27 #Javascript
使用Vue.js中的过滤器实现幂方求值的方法
Aug 27 #Javascript
You might like
PHP函数utf8转gb2312编码
2006/12/21 PHP
理解和运用PHP中的多态性[译]
2011/08/02 PHP
PHP封装的MSSql操作类完整实例
2016/05/26 PHP
php mysqli查询语句返回值类型实例分析
2016/06/29 PHP
php微信开发之百度天气预报
2016/11/18 PHP
PHP检查文件是否存在,不存在自动创建及读取文件内容操作示例
2020/01/23 PHP
[原创]后缀就扩展名为js的文件是什么文件
2007/12/06 Javascript
express的中间件basicAuth详解
2014/12/04 Javascript
RGB和YUV 多媒体编程基础详细介绍
2016/11/04 Javascript
vue + element-ui实现简洁的导入导出功能
2017/12/22 Javascript
javascript事件循环event loop的简单模型解释与应用分析
2020/03/14 Javascript
JS内置对象和Math对象知识点详解
2020/04/03 Javascript
处理JavaScript值为undefined的7个小技巧
2020/07/28 Javascript
python正则匹配查询港澳通行证办理进度示例分享
2013/12/27 Python
python调用机器喇叭发出蜂鸣声(Beep)的方法
2015/03/23 Python
python相似模块用例
2016/03/04 Python
Python使用MD5加密算法对字符串进行加密操作示例
2018/03/30 Python
Python交互环境下实现输入代码
2018/06/22 Python
浅析Python 实现一个自动化翻译和替换的工具
2019/04/14 Python
Python with关键字,上下文管理器,@contextmanager文件操作示例
2019/10/17 Python
python实现计算器功能
2019/10/31 Python
YesBabyOnline美国:全球性的在线婚纱礼服工厂
2018/05/05 全球购物
澳大利亚最大的护发和护肤品购物网站:RY
2019/12/26 全球购物
保安员岗位职责
2013/11/17 职场文书
读群众路线心得体会
2014/03/07 职场文书
大家访活动实施方案
2014/03/10 职场文书
我的祖国演讲稿
2014/05/04 职场文书
对外汉语专业大学生职业生涯规划书
2014/10/11 职场文书
房屋产权证明书
2014/10/15 职场文书
工作作风懒散检讨书
2014/10/29 职场文书
饭店服务员岗位职责
2015/02/09 职场文书
大学生旷课检讨书1000字
2015/02/19 职场文书
历史名人教你十五个读书方法,赶快Get起来!
2019/07/18 职场文书
muduo TcpServer模块源码分析
2022/04/26 Redis
Windows server 2012搭建FTP服务器
2022/04/29 Servers
Python面试不修改数组找出重复的数字
2022/05/20 Python