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 面向对象编程基础:封装
Aug 21 Javascript
JS 事件绑定函数代码
Apr 28 Javascript
javascript表单验证 - Parsley.js使用和配置
Jan 25 Javascript
js 显示base64编码的二进制流网页图片
Apr 04 Javascript
判断在css加载完毕后执行后续代码示例
Sep 03 Javascript
JS 日期与时间戮相互转化的简单实例
Jun 22 Javascript
聊一聊Vue.js过渡效果
Sep 07 Javascript
移动端使用localResizeIMG4压缩图片
Apr 22 Javascript
vue iView 上传组件之手动上传功能
Mar 16 Javascript
微信小程序实现页面浮动导航
Jan 28 Javascript
layui 对弹窗 form表单赋值的实现方法
Sep 04 Javascript
JS eval代码快速解密实例解析
Apr 23 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中用header图片地址 简单隐藏图片源地址
2008/04/09 PHP
PHP运行时强制显示出错信息的代码
2011/04/20 PHP
JavaScript高级程序设计(第3版)学习笔记5 js语句
2012/10/11 Javascript
子页向父页传值示例
2013/11/27 Javascript
javascript自动给文本url地址增加链接的方法分享
2014/01/20 Javascript
jquery实现手机发送验证码的倒计时代码
2014/02/12 Javascript
JS中完美兼容各大浏览器的scrolltop方法
2015/04/17 Javascript
JavaScript实现邮箱地址自动匹配功能代码
2016/11/28 Javascript
js手机号批量滚动抽奖实现代码
2020/04/17 Javascript
JS中的数组转变成JSON格式字符串的方法
2017/05/09 Javascript
详解vue+vueRouter+webpack的简单实例
2017/06/17 Javascript
angular框架实现全选与单选chekbox的自定义
2017/07/06 Javascript
如何将 jQuery 从你的 Bootstrap 项目中移除(取而代之使用Vue.js)
2017/07/17 jQuery
详解Nodejs 通过 fs.createWriteStream 保存文件
2017/10/10 NodeJs
vuex进阶知识点巩固
2018/05/20 Javascript
Vue中使用sass实现换肤功能
2018/09/07 Javascript
解决mui框架中switch开关通过js控制开或者关状态时小圆点不动的问题
2019/09/03 Javascript
基于javascript实现放大镜特效
2020/12/03 Javascript
vue实现简易的双向数据绑定
2020/12/29 Vue.js
[02:23]2016国际邀请赛中国区预选赛wings晋级之路
2016/06/29 DOTA
python实现八大排序算法(2)
2017/09/14 Python
基于Django contrib Comments 评论模块(详解)
2017/12/08 Python
flask中主动抛出异常及统一异常处理代码示例
2018/01/18 Python
基于windows下pip安装python模块时报错总结
2018/06/12 Python
Django添加KindEditor富文本编辑器的使用
2018/10/24 Python
Django--权限Permissions的例子
2019/08/28 Python
python网络编程之多线程同时接受和发送
2019/09/03 Python
如何使用python进行pdf文件分割
2019/11/11 Python
基于keras输出中间层结果的2种实现方式
2020/01/24 Python
Python实现在Windows平台修改文件属性
2020/03/05 Python
澳大利高级泳装品牌:Bondi Born
2018/05/23 全球购物
武夷山导游词
2015/02/03 职场文书
民事起诉状范文
2015/05/19 职场文书
Pytorch实现图像识别之数字识别(附详细注释)
2021/05/11 Python
python 实现图与图之间的间距调整subplots_adjust
2021/05/21 Python
浅谈css实现背景颜色半透明的两种方法
2021/12/06 HTML / CSS