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 设计模式学习 Factory
Jul 29 Javascript
jquery 读取页面load get post ajax 四种方式代码写法
Apr 02 Javascript
jQuery 源码分析笔记(7) Queue
Jun 19 Javascript
JQUERY对单选框(radio)操作的小例子
Apr 25 Javascript
SwfUpload在IE10上不出现上传按钮的解决方法
Jun 25 Javascript
jquery中插件实现自动添加用户的具体代码
Nov 15 Javascript
基于JavaScript制作霓虹灯文字 代码 特效
Sep 01 Javascript
Bootstrap如何创建表单
Oct 21 Javascript
JavaScript正则表达式替换字符串中图片地址(img src)的方法
Jan 13 Javascript
微信小程序访问node.js接口服务器搭建教程
Apr 25 Javascript
jQuery封装placeholder效果实现方法,让低版本浏览器支持该效果
Jul 08 jQuery
layui 表格的属性的显示转换方法
Aug 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实现将GB编码转换为UTF8
2006/11/25 PHP
防止MySQL注入或HTML表单滥用的PHP程序
2009/01/21 PHP
php简单的会话类代码
2011/08/08 PHP
php生成PDF格式文件并且加密
2015/06/22 PHP
CodeIgniter与PHP5.6的兼容问题
2015/07/16 PHP
ThinkPHP安装和设置
2015/07/27 PHP
PHP使用第三方即时获取物流动态实例详解
2017/04/27 PHP
Yii2.0框架模型添加/修改/删除数据操作示例
2019/07/18 PHP
javascript Math.random()随机数函数
2009/11/04 Javascript
可在线编辑网页文字效果代码(单击)
2013/03/02 Javascript
javascript:json数据的页面绑定示例代码
2014/01/26 Javascript
浅谈在js传递参数中含加号(+)的处理方式
2016/10/11 Javascript
Vuejs仿网易云音乐实现听歌及搜索功能
2017/03/30 Javascript
原生JS实现列表子元素顺序反转的方法分析
2018/07/02 Javascript
JS中使用cavas截图网页并解决跨域及模糊问题
2018/11/13 Javascript
小程序登录态管理的方法示例
2018/11/13 Javascript
Python struct.unpack
2008/09/06 Python
浅谈Python中的数据类型
2015/05/05 Python
Python栈类实例分析
2015/06/15 Python
Django基于ORM操作数据库的方法详解
2018/03/27 Python
python下解压缩zip文件并删除文件的实例
2018/04/24 Python
使用Python监控文件内容变化代码实例
2018/06/04 Python
tensorflow使用神经网络实现mnist分类
2018/09/08 Python
Python递归函数实例讲解
2019/02/27 Python
win10下opencv-python特定版本手动安装与pip自动安装教程
2020/03/05 Python
python数据库操作mysql:pymysql、sqlalchemy常见用法详解
2020/03/30 Python
Python基于time模块表示时间常用方法
2020/06/18 Python
通过自学python能找到工作吗
2020/06/21 Python
Python数据库封装实现代码示例解析
2020/09/05 Python
华为智利官方商店:Huawei Chile
2020/05/09 全球购物
夜大毕业生自我鉴定
2013/10/31 职场文书
年终晚会主持词
2014/03/25 职场文书
乔布斯斯坦福大学演讲稿
2014/05/23 职场文书
电子商务专业毕业生求职信
2014/06/12 职场文书
人工作失职检讨书
2015/05/05 职场文书
幼儿园心得体会范文
2016/01/21 职场文书