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 相关文章推荐
基于jquery的放大镜效果
May 30 Javascript
javascript实现可改变滚动方向的无缝滚动实例
Jun 17 Javascript
js定时器的使用(实例讲解)
Jan 06 Javascript
javascript实现网页子页面遍历回调的方法(涉及 window.frames、递归函数、函数上下文)
Jul 27 Javascript
jquery实现Slide Out Navigation滑出式菜单效果代码
Sep 07 Javascript
解决JS组件bootstrap table分页实现过程中遇到的问题
Apr 21 Javascript
前端js弹出框组件使用方法
Aug 24 Javascript
vue v-model表单控件绑定详解
May 17 Javascript
JavaScript实现二叉树的先序、中序及后序遍历方法详解
Oct 26 Javascript
基于vue如何发布一个npm包的方法步骤
May 15 Javascript
微信JS-SDK实现微信会员卡功能(给用户微信卡包里发送会员卡)
Jul 25 Javascript
vue使用transition组件动画效果的实例代码
Jan 28 Vue.js
微信小程序模板消息限制实现无限制主动推送的示例代码
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判断服务器是否是HTTPS连接
2013/07/05 PHP
php获取百度收录、百度热词及百度快照的方法
2015/04/02 PHP
增强用户体验友好性之jquery easyui window 窗口关闭时的提示
2012/06/22 Javascript
bootstrap-wysiwyg结合ajax实现图片上传实时刷新功能
2016/05/27 Javascript
jQuery插件ContextMenu自定义图标
2017/03/15 Javascript
jQuery实现多张图片上传预览(不经过后端处理)
2017/04/29 jQuery
js实现数字递增特效【仿支付宝我的财富】
2017/05/05 Javascript
利用Node.js了解与测量HTTP所花费的时间详解
2017/09/22 Javascript
微信小程序模板和模块化用法实例分析
2017/11/28 Javascript
Vue SSR 组件加载问题
2018/05/02 Javascript
vue2中,根据list的id进入对应的详情页并修改title方法
2018/08/24 Javascript
vue移动端微信授权登录插件封装的实例
2018/08/28 Javascript
JavaScript实现汉字转换为拼音及缩写的方法示例
2019/03/28 Javascript
微信小程序--特定区域滚动到顶部时固定的方法
2019/04/28 Javascript
vue改变循环遍历后的数据实例
2019/11/07 Javascript
浅谈webpack和webpack-cli模块源码分析
2020/01/19 Javascript
jQuery实现简易聊天框
2020/02/08 jQuery
Python 返回汉字的汉语拼音
2009/02/27 Python
Python内置的字符串处理函数详细整理(覆盖日常所用)
2014/08/19 Python
python 数据清洗之数据合并、转换、过滤、排序
2017/02/12 Python
Python二叉树定义与遍历方法实例分析
2018/05/25 Python
pytorch中tensor的合并与截取方法
2018/07/26 Python
如何用python写一个简单的词法分析器
2018/12/18 Python
djang常用查询SQL语句的使用代码
2019/02/15 Python
django框架cookie和session用法实例详解
2019/12/10 Python
Python 实现将大图切片成小图,将小图组合成大图的例子
2020/03/14 Python
html5开发之viewport使用
2013/10/17 HTML / CSS
专科文秘应届生求职信
2013/11/18 职场文书
创业计划书——互联网商机
2014/01/12 职场文书
参观考察邀请函范文
2014/01/29 职场文书
动漫设计与制作专业推荐信
2014/07/07 职场文书
单位委托函范文
2015/01/29 职场文书
2015医德医风个人工作总结
2015/04/02 职场文书
《悬崖边的树》读后感2篇
2019/12/02 职场文书
OpenCV3.3+Python3.6实现图片高斯模糊
2021/05/18 Python
Android Rxjava3 使用场景详解
2022/04/07 Java/Android