一、关于数组的前端面试题 1、如何判断一个变量是否是数组? (1)为什么不使用它? 变量列表 = 1,2,3; list /""Array继承了AND,所以会直接返回,所以用方法检测不到(2)为什么不使用呢? var list = 1,2,3;list Array / 表面上确实返回true,但是并不可靠。原因是Array本质上是一个引用,方法(包括下面的方法)都是与引用进行比较地址。
2、通过比较简单的方法来确定,但是在帧嵌套的情况下,每个Array的引用地址不同,比较结果不确定,所以这种方法有其局限性。 (3)为什么不使用方法? var 列表 = 1,2,3;列表。 = 数组; /true 原因已经解释过了,不再重复。 检测数组的可靠方法 (1) 使用方法 var list = 1,2,3;..call(list); / Array (2) 使用 ES6 Array.() 方法 var list = 1,2,3;Array 。
3.(列表); /true 推荐选择 2.数组的原生方法有哪些? 首先是观察面试官的日常使用是否足够普通; 二是观察面试官是否总结了日常知识。 你可以按照MDN中给出的方式来回答:(1)一种改变自身的方法。 () 在数组内部,将一个元素序列复制到另一个元素序列,覆盖原始值。 .fill() 将数组中指定范围内的所有元素的值替换为固定值。 .pop() 删除数组的最后一个元素并返回该元素。 .push() 将一个或多个元素添加到数组末尾并返回
4.新长度。 .() 反转数组中元素的顺序,即原来的第一个变成最后一个,原来的最后一个变成第一个。 .shift() 删除数组的第一个元素并返回该元素。 .sort() 对数组元素进行排序并返回当前数组。 .() 在数组的任意位置添加或删除任意数量的元素。 .() 将一个或多个元素添加到数组的开头并返回数组的新长度。 (2) 不改变自身的方法。 () 返回一个由当前数组和其他几个数组组成的数组或
5. 或者由多个非数组值组成的新数组。 .() 判断当前数组是否包含指定值,如果包含则返回true,否则返回false。 .join() 将所有数组元素连接起来形成一个字符串。 .slice() 从当前数组中提取一段元素并将它们组合成一个新数组。 .() 返回表示当前数组文字的字符串。 隐藏原型链上的 .() 方法。 推荐picks.()返回由所有数组元素组成的字符串.cover
6.覆盖原型链上的.()方法。 .() 返回由所有数组元素组成的本地化字符串。 隐藏原型链上的 .() 方法。 .() 返回数组中第一个等于指定值的元素的索引,如果没有找到这样的元素,则返回 -1。 .() 返回数组中最后一个(右侧第一个)等于指定值的元素的索引,如果未找到此类元素,则返回 -1。 遍历方法Atot
7. ype.() 对数组中的每个元素执行一次回调函数。 .() 返回一个数组迭代器对象,其中包含所有数组元素的键值对。 如果数组中的每个元素都满足测试函数,.every() 返回 true,否则返回 false。 如果数组中至少有一个元素满足测试函数,.some() 返回 true,否则返回 false。 .() 将所有在过滤函数中返回 true 的数组元素放入一个新数组中并返回。 .find() 找到第一个令人满意的测试函数
8. 数字的元素并返回该元素的值。 如果找不到,则返回。 .() 查找第一个满足测试函数的元素并返回该元素的索引,如果未找到则返回 -1。 .keys() 返回一个数组迭代器对象,其中包含所有数组元素的键。 .map() 返回一个由回调函数的返回值组成的新数组。 .() 从左到右对每个数组元素执行一个回调函数,将上一个回调函数的返回值放入临时寄存器中传递给下一个回调函数,并返回上一个回调函数的返回值。 。红色的
9. () 从右到左对每个数组元素执行一个回调函数,将上一个回调函数的返回值放入临时寄存器中传递给下一个回调函数,并返回上一个回调函数的返回值。 。 推荐 picks.() 返回一个数组迭代器对象,其中包含所有数组元素的值。 () 与上面的 () 方法的功能相同。 3. 如何将类数组变量转换为数组? 如果是ES6,可以使用Array.from()方法; 如果您不确定环境,可以使用 .slice.call() 方法将类似的数组转换为。 (1)Array.from()详细解释:Se
10. t类型的转换 let s = new Set('foo', ); 数组.from(s); / "foo", 类型转换 let m = new Map(1, 2, 2, 4, 4, 8 );Array.from(m); / 1, 2, 2, 4, 4, 8类型数组值 f() Array.from();f(1, 2, 3);/ 1, 2, .from()的第二个参数mapFn为也非常有用。 它可以自定义传递的类似数组的值/使用箭头。
11. 作为映射到推荐选择/ .from(1, 2, 3, x => x + x); / 2, 4, 6/ a 的 / 由于数组在每个上,/ 下面 v 的值将是 .from(: 5, (v, i) => i);/ 0, 1, 2, 3 , 44.说说ES6对数组的使用
12.扩展添加扩展运算符()。 它将数组转换为以逗号分隔的参数序列。 var list = 1,2,3;.log(.list); /1 2 3 添加两个方法,Array.from() 和 Array.of() 方法。 添加了一些实例方法,如 ()、()、keys()、() 等。 5. 您能命名多少种数组去重方法? (1)利用void来实现。 = ()var tmp = ,res=;this.((i)!tmpi && res.p
13. ush(i) && (tmpi = true); 推荐选择)res; var list = 0,0,1,2,3,6,6;.log(list.(); /0,1,2 ,3,6 (2) 使用ES6.log(.new的Set数据结构set(list); /0,1,2,3,66 你知道类型是什么吗,很多人不知道,其实就是一个数组,就是0,如何“绑”一个嵌套数组,如 1,2,3,4,5 => 1,2,3,4,5?你能说出多少个方法?有很多方法,如果你的答案是使用
14.如果是递归的话,确实有点low,而且代码会比较复杂。 (1)使用.()方法 var list = 1,2,3,4,5;.log(list.(); /1,2,3,4,5 原理:该方法返回一个字符串,字符串它由通过调用 join() 方法连接起来(以逗号分隔)的数组中每个元素的 () 返回值组成。 (2) 使用 .join() 方法 var list = 1,2,3,4,5 ;.log(list.join(); /1,2,3,4,5 原理:join方法会将所有数组元素转为单词
15.字符串,然后使用分隔符连接这些字符串。 如果该元素为空或为 null,则会将其转换为空字符串。 PS:如果你觉得上面的输出不是数组,可以稍微处理一下 var list = 1,2,3,4,5;JSON.parse($list.(); /1,2,3,4 ,5 推荐 JSON.parse($list.join(); /1,2,3,4,57. 如何克隆数组?你能命名多少种方式? (1) 借用方法 var arr1 = 1,2 ,3; var arr2 = arr1.(); (2) 借用切片方法 var arr1 = 1,2,3; var arr2 = arr1.
16. 切片(0); 原理:数组本质上是一样的。 如果直接赋值,只是将引用赋值给另一个变量,这最终会导致复制的变量随着原始数组的变化而变化。 8. 介绍一下.sort()方法的原理? (后续问题:如果不传递参数会发生什么?)语法排序方法接受“比较函数”作为参数。 如果不带参数调用此方法,则数组中的元素将按字母顺序排序,或更准确地说,按字符编码顺序排序。 为此,应首先将数组的元素转换为字符串(如果需要)以进行比较。 如果你想按其他标准排序,你需要提供一个比较函数,比较两个值并返回一个数字,描述两个值的相对顺序。比较函数应该有
17. 两个参数a和b的返回值如下:如果a小于b,则在排序数组中a应该出现在b之前,则返回小于0的值。 如果 a 等于 b,则返回 0。 如果 a 大于 b,则返回大于 0 的值。 推荐选择 9. 你能说出多少种方法来查找数组中最大的元素? (1)自己实现一个冒泡算法,实现就不多说了(2)使用Math的max方法 var list = 1,100,23,65,43,2,9;Math.max.apply(null, list); /1, 2, 9, 23, 43, 65, 100 (3) 使用Array的sort方法先排序然后取值 var list = 1,100,23,65,43,2,9;list.sort( a, b) => ab;) /1, 2, 9, 23, 43, 65, 100 (注:可编辑下载,如有不当之处请指正,谢谢!) 推荐选型