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中给animation加更多的运作效果实例
Sep 05 Javascript
jQuery对html元素取值与赋值的方法
Nov 20 Javascript
jQuery事件绑定与解除绑定实现方法
Apr 15 Javascript
jQuery基于图层模仿五星星评价功能的方法
May 07 Javascript
AngularJs Scope详解及示例代码
Sep 01 Javascript
jQuery Form表单取值的方法
Jan 11 Javascript
IntersectionObserver实现图片懒加载的示例
Sep 29 Javascript
Vue项目中添加锁屏功能实现思路
Jun 29 Javascript
JavaScript寄生组合式继承原理与用法分析
Jan 11 Javascript
从零搭一个自用的前端脚手架的方法步骤
Sep 23 Javascript
微信小程序实现点击按钮后修改颜色
Dec 05 Javascript
浅谈Vue使用Cascader级联选择器数据回显中的坑
Oct 31 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来写记数器(详细介绍)
2006/10/09 PHP
php判断字符以及字符串的包含方法属性
2008/08/30 PHP
php smarty 二级分类代码和模版循环例子
2011/06/01 PHP
thinkphp实现数组分页示例
2014/04/13 PHP
PHP中数据库单例模式的实现代码分享
2014/08/21 PHP
Mootools 1.2教程 选项卡效果(Tabs)
2009/09/15 Javascript
Javascript中typeof 用法小结
2015/05/12 Javascript
谈谈我对JavaScript原型和闭包系列理解(随手笔记8)
2015/12/24 Javascript
谷歌showModalDialog()方法不兼容出现对话窗口的解决办法
2016/02/15 Javascript
一起学写js Calender日历控件
2016/04/14 Javascript
PHP抓取HTTPS内容和错误处理的方法
2016/09/30 Javascript
js选项卡的制作方法
2017/01/23 Javascript
jQuery元素选择器实例代码
2017/02/06 Javascript
node.js学习之断言assert的使用示例
2017/09/28 Javascript
JS运动特效之任意值添加运动的方法分析
2018/01/24 Javascript
bootstrap table插件动态加载表头
2019/07/19 Javascript
[01:05:41]EG vs Optic Supermajor 败者组 BO3 第二场 6.6
2018/06/07 DOTA
使用Python脚本生成随机IP的简单方法
2015/07/30 Python
Python的Django框架中forms表单类的使用方法详解
2016/06/21 Python
Ubuntu下创建虚拟独立的Python环境全过程
2017/02/10 Python
Python编程实现两个文件夹里文件的对比功能示例【包含内容的对比】
2017/06/20 Python
Django ORM 查询管理器源码解析
2019/08/05 Python
numpy 声明空数组详解
2019/12/05 Python
Python实现一个简单的递归下降分析器
2020/08/01 Python
python在CMD界面读取excel所有数据的示例
2020/09/28 Python
精油和天然健康美容产品:Art Naturals
2018/01/27 全球购物
英国鞋网:Rubber Sole
2020/03/03 全球购物
保险专业大专生求职信
2013/10/26 职场文书
公司新员工的演讲稿注意事项
2014/01/01 职场文书
三年级科学教学反思
2014/01/29 职场文书
适用于所有创业者的创业计划书
2014/02/05 职场文书
党的群众路线教育实践活动总结
2014/10/30 职场文书
党的群众路线教育实践活动心得体会(乡镇)
2014/11/03 职场文书
2016年心理学教育培训学习心得体会
2016/01/12 职场文书
2016年“12.3”国际残疾人日活动总结
2016/04/01 职场文书
如何在Python项目中引入日志
2021/05/31 Python