关于数组的前端面试题

这篇博客探讨了前端面试中关于数组的常见问题,包括判断数组、原生方法分类、类数组转数组、ES6扩展、数组去重、Array.prototype类型、数组克隆、sort方法原理以及寻找数组最大值的多种方法。详细介绍了如instanceof、Array.prototype.toString、Array.from、Array.prototype.slice等关键知识点。
摘要由CSDN通过智能技术生成

关于数组的前端面试题

1、如何判断一个变量是否为数组?

(1)为什么不用typeof?

var list = [1,2,3];
typeof list  //"object"
Array继承与Object,所以typeof 会直接返回object,所以不可以用typeof方法来检测

(2)为什么不用instanceof?

var list = [1,2,3];
list instanceof Array    //true

instanceof 表面上看确实是返回了true,但其实并不可靠。原因是Array实质是一个引用,用instanceof方法(包括下面的constructor方法)都是利用和引用地址进行比较的方法来确定的,但是在frame嵌套的情况下,每一个Array的引用地址都是不同的,比较起来结果也是不确定的,所以这种方法有其局限性。

(3)为什么不用constructor方法?

var list = [1,2,3];
list.constructor === Array;    //true
原因已经解释过了,不再赘述。

可靠的检测数组方式
(1)利用Object的toString方法
var list = [1,2,3];
Object.prototype.toString.call(list); //[object Array]

(2)利用ES6的Array.isArray()方法
var list = [1,2,3];
Array.isArray(list); //true

2、数组的原生方法有哪些?

一是考察面试者平时使用的是否足够平凡;二是观察面试者是否对于日常的知识有所归纳。

可以用MDN中给出的方式来回答:

(1)会改变自身的方法

Array.prototype.copyWithin() 在数组内部,将一段元素序列拷贝到另一段元素序列上,覆盖原有的值。
Array.prototype.fill() 将数组中指定区间的所有元素的值,都替换成某个固定的值。
Array.prototype.pop()删除数组的最后一个元素,并返回这个元素。
Array.prototype.push()在数组的末尾增加一个或多个元素,并返回数组的新长度。
Array.prototype.reverse()颠倒数组中元素的排列顺序,即原先的第一个变为最后一个,原先的最后一个变为第一个。

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值