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 相关文章推荐
基于prototype的validation.js发布2.3.4新版本,让你彻底脱离表单验证的烦恼
Dec 06 Javascript
js 静态动态成员 and 信息的封装和隐藏
May 29 Javascript
JS连接SQL数据库与ACCESS数据库的方法实例
Nov 21 Javascript
js贪吃蛇网页版游戏特效代码分享(挑战十关)
Aug 24 Javascript
Bootstrap基本组件学习笔记之下拉菜单(7)
Dec 07 Javascript
Bootstrap 模态框实例插件案例分析
Dec 28 Javascript
Vue数据驱动模拟实现2
Jan 11 Javascript
快速理解 JavaScript 中的 LHS 和 RHS 查询的用法
Aug 24 Javascript
详解使用create-react-app添加css modules、sasss和antd
Jul 31 Javascript
解决Layui中templet中a的onclick参数传递的问题
Sep 20 Javascript
vue实现页面内容禁止选中功能,仅输入框和文本域可选
Nov 09 Javascript
使用 Opentype.js 生成字体子集的实例代码详解
May 25 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中的按位与和按位或操作示例
2014/01/27 PHP
初识PHP
2014/09/28 PHP
Laravel框架基础语法与知识点整理【模板变量、输出、include引入子视图等】
2019/12/03 PHP
ThinkPHP类似AOP思想的参数验证的实现方法
2019/12/18 PHP
php操作redis命令及代码实例大全
2020/11/19 PHP
javascript 兼容鼠标滚轮事件
2009/04/07 Javascript
PhantomJS快速入门教程(服务器端的 JavaScript API 的 WebKit)
2015/08/06 Javascript
jQuery获取浏览器类型和版本号的方法
2016/07/05 Javascript
jQuery实现的无限级下拉菜单功能示例
2016/09/12 Javascript
JS排序之选择排序详解
2017/04/08 Javascript
Vue Spa切换页面时更改标题的实例代码
2017/07/15 Javascript
jquery在启动页面时,自动加载数据的实例
2018/01/22 jQuery
详解angular分页插件tm.pagination二次触发问题解决方案
2018/07/20 Javascript
使用angularjs.foreach时return的问题解决
2018/09/30 Javascript
从零开始用electron手撸一个截屏工具的示例代码
2018/10/10 Javascript
解决node终端下运行js文件不支持ES6语法
2020/04/04 Javascript
15个简单的JS编码标准让你的代码更整洁(小结)
2020/07/16 Javascript
[00:36]DOTA2上海特级锦标赛 Archon战队宣传片
2016/03/04 DOTA
Python使用MySQLdb for Python操作数据库教程
2014/10/11 Python
python实现在目录中查找指定文件的方法
2014/11/11 Python
从CentOS安装完成到生成词云python的实例
2017/12/01 Python
python中文乱码不着急,先看懂字节和字符
2017/12/20 Python
python特性语法之遍历、公共方法、引用
2018/08/08 Python
python实现控制台打印的方法
2019/01/12 Python
Python3.4解释器用法简单示例
2019/03/22 Python
深入了解Python iter() 方法的用法
2019/07/11 Python
Django框架教程之中间件MiddleWare浅析
2019/12/29 Python
修复iPhone的safari浏览器上submit按钮圆角bug
2012/12/24 HTML / CSS
使用SVG实现提示框功能的示例代码
2020/06/05 HTML / CSS
database面试题
2013/03/28 面试题
《中彩那天》教学反思
2014/02/22 职场文书
个人委托书
2014/07/31 职场文书
捐资助学感谢信
2015/01/21 职场文书
JS新手入门数组处理的实用方法汇总
2021/04/07 Javascript
java如何实现socket连接方法封装
2021/09/25 Java/Android
vue3使用vuedraggable实现拖拽功能
2022/04/06 Vue.js