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 更新 JavaScript 数组的 uniq 方法
Jan 23 Javascript
IE和FireFox(FF)中js和css的不同
Apr 13 Javascript
超越Jquery_01_isPlainObject分析与重构
Oct 20 Javascript
node.js解决获取图片真实文件类型的问题
Dec 20 Javascript
Javascript writable特性介绍
Feb 27 Javascript
js实现透明度渐变效果的方法
Apr 10 Javascript
js实现网站最上边可关闭的浮动广告条代码
Sep 04 Javascript
jquery 实现输入邮箱时自动补全下拉提示功能
Oct 04 Javascript
利用angular.copy取消变量的双向绑定与解析
Nov 25 Javascript
深入理解Angular4订阅(Subscribe)与取消
Nov 22 Javascript
vue+django实现一对一聊天功能的实例代码
Jul 17 Javascript
解决vue cli4升级sass-loader(v8)后报错问题
Jul 30 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写杨辉三角实例代码
2011/07/17 PHP
PHP中Fatal error session_start()错误解决步骤
2014/08/05 PHP
PHP编程实现阳历转换为阴历的方法实例
2017/08/08 PHP
php表单处理操作
2017/11/16 PHP
随机显示经典句子或诗歌的javascript脚本
2007/08/04 Javascript
iframe 自适应高度[在IE6 IE7 FF下测试通过]
2009/04/13 Javascript
JS 自定义函数缺省值的设置方法
2010/05/05 Javascript
JavaScript 用cloneNode方法克隆节点的代码
2012/10/15 Javascript
原生js实现复制对象、扩展对象 类似jquery中的extend()方法
2014/08/30 Javascript
JavaScript判断前缀、后缀是否是空格的方法
2015/04/15 Javascript
纯js实现仿QQ邮箱弹出确认框
2015/04/29 Javascript
jQuery动画效果图片轮播特效
2016/01/12 Javascript
JavaScript中点击事件的写法
2016/06/28 Javascript
AngularJS入门教程之表格实例详解
2016/07/27 Javascript
深入理解Angularjs中的$resource服务
2016/12/31 Javascript
深入理解Node.js中的进程管理
2017/03/13 Javascript
深入理解vue Render函数
2017/07/19 Javascript
微信小程序云开发详细教程
2019/05/16 Javascript
Vue 实现登录界面验证码功能
2020/01/03 Javascript
vue 检测用户上传图片宽高的方法
2020/02/06 Javascript
浅谈Vue 函数式组件的使用技巧
2020/06/16 Javascript
Python  连接字符串(join %)
2008/09/06 Python
Eclipse + Python 的安装与配置流程
2013/03/05 Python
解决python matplotlib imshow无法显示的问题
2018/05/24 Python
对python插入数据库和生成插入sql的示例讲解
2018/11/14 Python
Python3安装Pillow与PIL的方法
2019/04/03 Python
SEPHORA新西兰官方网站:购买化妆品和护肤品
2016/12/02 全球购物
Hotels.com日本:国外和海外住宿,酒店预订
2019/12/13 全球购物
JDK安装目录下有哪些内容
2014/08/25 面试题
JS原生实现轮播图的几种方法
2021/03/23 Javascript
利用promise及参数解构封装ajax请求的方法
2021/03/24 Javascript
如何写好升职自荐信
2014/01/06 职场文书
经典公益广告词
2014/03/13 职场文书
数学教师个人工作总结
2015/02/06 职场文书
董事长秘书工作总结
2015/08/14 职场文书
科学家测试在太空中培育人造肉,用于未来太空旅行
2022/04/29 数码科技