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 相关文章推荐
10个基于浏览器的JavaScript调试工具分享
Feb 07 Javascript
用js将内容复制到剪贴板兼容浏览器
Mar 18 Javascript
jquery网页回到顶部效果(图标渐隐,自写)
Jun 16 Javascript
JavaScript常用脚本汇总(二)
Mar 04 Javascript
js生成验证码并直接在前端判断
May 15 Javascript
微信小程序 闭包写法详细介绍
Dec 14 Javascript
jQuery Easyui datagrid行内实现【添加】、【编辑】、【上移】、【下移】
Dec 19 Javascript
jQuery实现的form转json经典示例
Oct 10 jQuery
JS实现方形抽奖效果
Aug 27 Javascript
React Router V4使用指南(精讲)
Sep 17 Javascript
Vue Element UI + OSS实现上传文件功能
Jul 31 Javascript
JavaScript中使用Spread运算符的八种方法总结
Jun 18 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
sphinx增量索引的一个问题
2011/06/14 PHP
Linux下从零开始安装配置Nginx服务器+PHP开发环境
2015/12/21 PHP
php自定义函数br2nl实现将html中br换行符转换为文本输入中换行符的方法【与函数nl2br功能相反】
2017/02/17 PHP
PHP面向对象多态性实现方法简单示例
2017/09/27 PHP
jQuery学习4 浏览器的事件模型
2010/02/07 Javascript
基于jQuery架构javascript基础体系
2011/01/01 Javascript
使用jQuery.fn自定义jQuery翻页插件
2013/01/20 Javascript
document.getElementById获取控件对象为空的解决方法
2013/11/20 Javascript
js实现通用的微信分享组件示例
2014/03/10 Javascript
一个Js文件函数中调用另一个Js文件函数的方法演示
2017/08/14 Javascript
微信小程序删除处理详解
2017/08/16 Javascript
jquery+ajaxform+springboot控件实现数据更新功能
2018/01/22 jQuery
详解如何运行vue项目
2019/04/15 Javascript
JS可断点续传文件上传实现代码解析
2020/07/30 Javascript
JavaScript中的执行环境和作用域链
2020/09/04 Javascript
js获取url页面id,也就是最后的数字文件名
2020/09/25 Javascript
js实现简易ATM功能
2020/10/27 Javascript
使用vant的地域控件追加全部选项
2020/11/03 Javascript
python标准算法实现数组全排列的方法
2015/03/17 Python
解决Django中修改js css文件但浏览器无法及时与之改变的问题
2019/08/31 Python
pytorch使用tensorboardX进行loss可视化实例
2020/02/24 Python
Django自定义全局403、404、500错误页面的示例代码
2020/03/08 Python
使用sklearn对多分类的每个类别进行指标评价操作
2020/06/11 Python
解决CSS3的opacity属性带来的层叠顺序问题
2016/05/09 HTML / CSS
Ratchet 模态框的实现
2020/08/19 HTML / CSS
有750多个顶级品牌的瑞士时尚在线:ABOUT YOU
2017/01/04 全球购物
英国可持续奢侈品包包品牌:Elvis & Kresse
2018/08/05 全球购物
医学专业毕业生个人的求职信
2013/12/04 职场文书
工作交流会欢迎词
2014/01/12 职场文书
保健品市场营销方案
2014/03/31 职场文书
人代会标语
2014/06/30 职场文书
学校运动会加油词
2015/07/18 职场文书
2016公务员年度考核评语
2015/12/01 职场文书
Spring整合Mybatis的全过程
2021/06/28 Java/Android
微信告警的zabbix监控系统 监控整个NGINX集群
2022/04/18 Servers
Java 异步任务计算FutureTask
2022/04/28 Java/Android