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中绑定事件的命名空间详解
Apr 05 Javascript
JQuery文字列表向上滚动的代码
Nov 13 Javascript
jquery实现不同大小浏览器使用不同的css样式表的方法
Apr 02 Javascript
jQuery操作cookie方法实例教程
Nov 25 Javascript
JavaScript中string转换成number介绍
Dec 31 Javascript
JavaScript实现的类字典插入或更新方法实例
Jul 10 Javascript
利用jQuery插件imgAreaSelect实现图片上传裁剪(放大缩小)
Dec 02 Javascript
详解支持Angular 2的表格控件
Jan 19 Javascript
基于JavaScript实现移动端无限加载分页
Mar 27 Javascript
javascript验证form表单数据的案例详解
Mar 25 Javascript
解决微信小程序中的滚动穿透问题
Sep 16 Javascript
vue封装可复用组件confirm,并绑定在vue原型上的示例
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批量删除数据库下指定前缀的表以prefix_为例
2014/08/24 PHP
php页面缓存方法小结
2015/01/10 PHP
php实现SAE上使用storage上传与下载文件的方法
2015/06/29 PHP
54个提高PHP程序运行效率的方法
2015/07/19 PHP
PHP针对字符串开头和结尾的判断方法
2016/07/11 PHP
php版微信自定义回复功能示例
2016/12/05 PHP
实例化php类时传参的方法分析
2020/06/05 PHP
JavaScript 组件之旅(三):用 Ant 构建组件
2009/10/28 Javascript
JavaScript 基础篇(一)
2012/03/30 Javascript
JSONP 跨域共享信息
2012/08/16 Javascript
JavaScript中switch判断容易犯错的一个细节
2014/08/27 Javascript
jQuery实时显示鼠标指针位置和键盘ASCII码
2016/03/28 Javascript
vue2.0使用Sortable.js实现的拖拽功能示例
2017/02/21 Javascript
JavaScript面试出现频繁的一些易错点整理
2018/03/29 Javascript
async/await地狱该如何避免详解
2018/05/10 Javascript
Vue 路由切换时页面内容没有重新加载的解决方法
2018/09/01 Javascript
微信小程序wx:for循环的实例详解
2018/10/07 Javascript
JS事件绑定的常用方式实例总结
2019/03/02 Javascript
浅谈layui 表单元素的选中问题
2019/10/25 Javascript
vue多个元素的样式选择器问题
2019/11/29 Javascript
vue-router 路由传参用法实例分析
2020/03/06 Javascript
Vue使用Proxy代理后仍无法生效的解决
2020/11/13 Javascript
关于Js中new操作符的作用详解
2021/02/21 Javascript
Python制作爬虫抓取美女图
2016/01/20 Python
python 写入csv乱码问题解决方法
2016/10/23 Python
Python对列表去重的多种方法(四种方法)
2017/12/05 Python
Python实现一个Git日志统计分析的小工具
2017/12/14 Python
python requests更换代理适用于IP频率限制的方法
2019/08/21 Python
Python如何给你的程序做性能测试
2020/07/29 Python
Dockers鞋官网:Dockers Shoes
2018/11/13 全球购物
煤矿安全知识竞赛活动总结
2014/07/07 职场文书
作文评语怎么写
2014/12/25 职场文书
中秋节晚会开场白
2015/05/29 职场文书
歌舞青春观后感
2015/06/10 职场文书
Django实现翻页的示例代码
2021/05/24 Python
《火纹风花雪月无双》预告“神秘雇佣兵” 紫发剑客
2022/04/13 其他游戏