面试题数组篇(1)
来源:互联网 发布:mysql 热备 编辑:程序博客网 时间:2024/06/05 06:22
前端面试中,数组是少不了的。因为数组使用度比较频繁,我在项目中就经常使用。JavaScript拼接Html,数据结构计算,等等。 属性 描述 constructor返回对创建此对象的数组函数的引用。length设置或返回数组中元素的数目。prototype使您有能力向对象添加属性和方法。 方法 描述 concat()连接两个或更多的数组,并返回结果。join()把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔。pop()删除并返回数组的最后一个元素push()向数组的末尾添加一个或更多元素,并返回新的长度。reverse()颠倒数组中元素的顺序。shift()删除并返回数组的第一个元素slice()从某个已有的数组返回选定的元素sort()对数组的元素进行排序splice()删除元素,并向数组添加新元素。toSource()返回该对象的源代码。toString()把数组转换为字符串,并返回结果。toLocaleString()把数组转换为本地数组,并返回结果。unshift()向数组的开头添加一个或更多元素,并返回新的长度。valueOf()返回数组对象的原始值
汇总一下面试中数组会问到的几个问题,这个问题在面试经常被问到,但是一般同学都不太熟悉。不全面的大家可以留言补充。
1、数组有哪些方法,常用的有哪几个
Array 对象属性
Array 对象方法 (14个,前面9个都比较常用)
表格摘自w3school网站,点击方法和属性,可以链接到网站查看。
这些方法通过传递不同参数,可以达到意外的效果,请看第二个问题。
2、js中对数组的clone
clone即克隆,就是复制一个数组:
var ary = [1,2,3];var ary1 = ary.concat(); // 第一种方法var ary2 = ary.slice(0); // 第二种方法var ary3 = ary; // 这个不是复制,这个是引用
这两种方法复制的数组是一个新数组,原数组的值改变了,新数组不会受到影响。
3、 查找一个字符串中出现次数最多的字符,统计这个次数
第一种方法:
先说一下思路:先定义一个空对象,将字符串中的字符作为对象的属性,就可以统计出次数了。然后找出对象中各个属性的最大值。
<span style="font-size:14px;">// 字符串可以用单引号,也可以用双引号var str = 'ajfewiqnnfsdajfdajfdkakfjkdsfjds';var obj = {};// 处理字符串字符,给对象做属性用for(var i=0;i<str.length;i++){ // 中括号调用,数组是下标,对象是属性,obj.name 和 obj['name'] if(obj[str.charAt(i)]){ // 如果对象有这个属性了,就给这个属性值自增1 obj[str.charAt(i)]++; }else{ // 如果对象没有这个属性,就给这个属性值设为1 obj[str.charAt(i)] = 1; }}// 找出对象属性中最多次数var times = 0;var value = '';// for in 是另一种for循环,可以用于遍历对象的属性和方法for(var i in obj){ if(obj[i]>times){ times = obj[i]; value = i; }}// 最多次数保存在times中了,字符保存在value中了</span>
第二种方法:
先说一下思路:使用正则表达式,匹配字符串,同时计数。
<span style="font-size:14px;">var str = 'ajfewiqnnfsdajfdajfdkakfjkdsfjds';var obj = {};str.replace(/(.)\1*/g,function(_,__){ if(obj[__]){ obj[__] += _.length; }else{ obj[__] = _.length; }});var times = 0;var value = '';for(var i in obj){ if(obj[i]>times){ times = obj[i]; value = i; }}</span>
4、 编写一个方法,去掉一个数组的重复元素
去掉重复记录和上面的字符重复次数统计思路类似,代码不重复了。
5、找出数组中最大值可以使用哪些方法
var ary = [1,25,16,32,43,26,13,28,19];// 1、 for循环遍历,比较low,就不写了// 2、 数组排序ary.sort()[ary.length-1];// 3、数组排序+截取ary.sort().splice(-1)[0];// 4、借用Math最大值方法Math.max.apply(null,ary);
0 0
- 面试题数组篇(1)
- [数组]面试题1
- 面试题之数组篇
- 亚马逊面试题1(数组)
- 面试题--1 数组的几道面试题
- 面试题1:二维数组中的查找
- Google 2016 面试题1 | 数组补丁
- 面试题(一)数组
- 面试题-三维数组
- 字符串/数组面试题
- 一个数组面试题
- 数组面试题
- 面试题-数组
- 常见数组面试题
- 面试题:数组匹配
- 阿里巴巴面试题--数组
- 数组面试题
- 数组类面试题
- Linux输入子系统(Input Subsystem)
- [HDU2604]Queuing(dp+矩阵快速幂)
- 融联云通讯的底层实现协议简介
- Java开发中的23种设计模式详解之二:7种结构型模式
- Stateful Session Bean VS Entity Bean
- 面试题数组篇(1)
- Android之系统触摸事件三步曲
- Android Studio方法注释模板
- 深入理解Java之泛型
- runOnUiThread(new Runnable())
- Java 中char是如何编码的
- myeclipse选中变量 相同变量名不会变色
- aidl 使用案例简介
- 小括号内联复合表达式