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 全角转换实现代码
Jul 17 Javascript
php gethostbyname获取域名ip地址函数详解
Jan 24 Javascript
浅谈tudou土豆网首页图片延迟加载的效果
Jun 23 Javascript
JS中令人发指的valueOf方法介绍
Feb 22 Javascript
JavaScript中访问节点对象的方法有哪些如何使用
Sep 24 Javascript
使用javaScript动态加载Js文件和Css文件
Oct 24 Javascript
jQuery EasyUI 菜单与按钮之创建简单的菜单和链接按钮
Nov 18 Javascript
利用CSS3在Angular中实现动画
Jan 15 Javascript
在Vue中使用echarts的实例代码(3种图)
Jul 10 Javascript
JS库particles.js创建超炫背景粒子插件(附源码下载)
Sep 13 Javascript
vue 解除鼠标的监听事件的方法
Nov 13 Javascript
vue 验证两次输入的密码是否一致的方法示例
Sep 29 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
CodeIgniter框架中_remap()使用方法2例
2014/03/10 PHP
PHP实现的折半查询算法示例
2017/10/09 PHP
PHP实现的装箱算法示例
2018/06/23 PHP
JavaScript OOP面向对象介绍
2010/12/02 Javascript
javascript中数组的多种定义方法和常用函数简介
2014/05/09 Javascript
jquery实现弹出层效果实例
2015/05/19 Javascript
jquery使用ul模拟select实现表单美化的方法
2015/08/18 Javascript
jQuery图片轮播滚动切换代码分享
2020/04/20 Javascript
基于jQuery实现的双11天猫拆红包抽奖效果
2015/12/01 Javascript
jQuery自定义动画函数实例详解(附demo源码)
2015/12/10 Javascript
javascript实现根据函数名称字符串动态执行函数的方法示例
2016/12/28 Javascript
Vuex 入门教程
2018/01/10 Javascript
深入理解vue中slot与slot-scope的具体使用
2018/01/26 Javascript
浅谈Fetch 数据交互方式
2018/12/20 Javascript
原生JS实现微信通讯录
2020/06/18 Javascript
python文件与目录操作实例详解
2016/02/22 Python
Python在线运行代码助手
2016/07/15 Python
Python 中的range(),以及列表切片方法
2018/07/02 Python
详解Django CAS 解决方案
2019/10/30 Python
使用python实现希尔、计数、基数基础排序的代码
2019/12/25 Python
python两个list[]相加的实现方法
2020/09/23 Python
python 爬虫如何正确的使用cookie
2020/10/27 Python
python中实现词云图的示例
2020/12/19 Python
解决virtualenv -p python3 venv报错的问题
2021/02/05 Python
使用css3实现的windows8开机加载动画
2014/12/09 HTML / CSS
HTML5 离线应用之打造零请求、无流量网站的解决方法
2013/04/25 HTML / CSS
巴西宠物店在线:Geração Pet
2017/05/31 全球购物
纽约海:Sea New York
2018/11/04 全球购物
小学后勤管理制度
2014/01/14 职场文书
安全保证书范文
2014/04/29 职场文书
2014酒店客房部工作总结
2014/12/16 职场文书
客户答谢会致辞
2015/01/20 职场文书
舞出我人生观后感
2015/06/16 职场文书
创业项目(超低成本创业项目)
2019/08/16 职场文书
大学学生会主席竞选稿怎么写?
2019/08/19 职场文书
PostgreSQL出现死锁该如何解决
2022/05/30 PostgreSQL