前端面试题:数组001篇

前端面试中,数组是少不了的。因为数组使用度比较频繁,我在项目中就经常使用。JavaScript拼接Html,数据结构计算,等等。

汇总一下面试中数组会问到的几个问题,这个问题在面试经常被问到,但是一般同学都不太熟悉。不全面的大家可以留言补充。

1、数组有哪些方法,常用的有哪几个

Array 对象属性

属性 描述
constructor 返回对创建此对象的数组函数的引用。
length 设置或返回数组中元素的数目。
prototype 使您有能力向对象添加属性和方法。

Array 对象方法 (14个,前面9个都比较常用)

方法 描述
concat() 连接两个或更多的数组,并返回结果。
join() 把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔。
pop() 删除并返回数组的最后一个元素
push() 向数组的末尾添加一个或更多元素,并返回新的长度。
reverse() 颠倒数组中元素的顺序。
shift() 删除并返回数组的第一个元素
slice() 从某个已有的数组返回选定的元素
sort() 对数组的元素进行排序
splice() 删除元素,并向数组添加新元素。
toSource() 返回该对象的源代码。
toString() 把数组转换为字符串,并返回结果。
toLocaleString() 把数组转换为本地数组,并返回结果。
unshift() 向数组的开头添加一个或更多元素,并返回新的长度。
valueOf() 返回数组对象的原始值

表格摘自w3school网站,点击方法和属性,可以链接到网站查看。

这些方法通过传递不同参数,可以达到意外的效果,请看第二个问题。

2、js中对数组的clone

clone即克隆,就是复制一个数组:

var ary = [1,2,3];
var ary1 = ary.concat(); // 第一种方法
var ary2 = ary.slice(0);  // 第二种方法
var ary3 = ary; // 这个不是复制,这个是引用

这两种方法复制的数组是一个新数组,原数组的值改变了,新数组不会受到影响。

3、 查找一个字符串中出现次数最多的字符,统计这个次数

先说一下思路:先定义一个空对象,将字符串中的字符作为对象的属性,就可以统计出次数了。然后找出对象中各个属性的最大值。

// 字符串可以用单引号,也可以用双引号
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中了

4、 编写一个方法,去掉一个数组的重复元素

去掉重复记录和上面的字符重复次数统计思路类似,代码不重复了。

时间: 2024-10-09 20:18:30

前端面试题:数组001篇的相关文章

前端面试题(JS篇)

原题地址:http://handyxuefeng.blog.163.com/blog/static/454521722013111714040259/ 好吧,最近打算换工作,所以关注比较多的是面试题,这套还不错,留下~~ 1.JS相关问题: 解释下事件代理(基础题) 解释下 JavaScript 中 this 是如何工作的(始终指向调用当前函数的对象) 解释下原型继承的原理. AMD vs. CommonJS? 什么是哈希表? 解释下为什么接下来这段代码不是 IIFE(立即调用的函数表达式):f

2017前端面试题之Js篇(1)

1 . 请解释事件代理 (event delegation) 当需要对很多元素添加事件的时,可以通过将事件添加到它们的父节点通过委托来触发处理函数.其中利用到了浏览器的事件冒泡机制. var delegate = function(client, clientMethod) { return function() { return clientMethod.apply(client, arguments); } } var agentMethod = delegate (client, clie

web前端面试题整理后篇(程序篇)

需要web前端课程工具和电子书,可以加: 33群105601600;  22群120342833 1. var obj = {a : 1}; (function (obj) { obj = {a : 2}; })(obj);       //问obj的值会改变吗? var obj = {a : 1}; (function (obj) {     obj = {a : 2}; })(obj); //问obj的值会改变吗? 外部的obj不变. 因为匿名函数中obj传入参数等于是创建了一个局部变量ob

2017前端面试题之Css篇(1)

1 . CSS 属性是否区分大小写? 答:不区分. HTML,CSS都对大小写不敏感,但为了更好的可读性和团队协作一般都小写,而在XHTML 中元素名称和属性是必须小写的. 2 . 行内(inline)元素 设置margin-top和margin-bottom 是否起作用?padding-top和padding-bottom是否会增加它的高度? 答:行内元素又分为替换元素(replaced element)和非替换元素(non-replaced element). 替换元素: 是指用作为其他内容

2017前端面试题之Html篇(1)

1 . doctype(文档类型) 的作用是什么? 对文档进行有效性验证: 它告诉用户代理和校验器这个文档是按照什么DTD 写的.这个动作是被动的, 每次页面加载时,浏览器并不会下载DTD 并检查合法性,只有当手动校验页面时才启用. 决定浏览器的呈现模式: 对于实际操作,通知浏览器读取文档时用哪种解析算法. 如果没有写,则浏览器则根据自身的规则对代码进行解析,可能会严重影响HTML 排版布局. 浏览器有三种方式解析HTML文档. 非怪异(标准)模式 怪异模式 部分怪异(近乎标准)模式 2 . H

前端面试题之JS篇

1.var a=b=3的执行顺序 var a,b; (function(){     alert(a);     alert(b);     var a=b=3;     alert(a);     alert(b); })(); alert(a); alert(b); 输出结果:undefined,undefined,3,3,undefined,3 参考:http://stackoverflow.com/questions/27329444/why-a-is-undefined-while-b

前端面试题整理—HTTP篇

1.常见的HTTP方法有哪些? GET: 用于请求访问已经被URI(统一资源标识符)识别的资源,可以通过URL传参给服务器 POST:用于传输信息给服务器,主要功能与GET方法类似,但一般推荐使用POST方式. PUT: 传输文件,报文主体中包含文件内容,保存到对应URI位置. HEAD: 获得报文首部,与GET方法类似,只是不返回报文主体,一般用于验证URI是否有效. DELETE:删除文件,与PUT方法相反,删除对应URI位置的文件. OPTIONS:查询相应URI支持的HTTP方法 2.H

前端面试题整理—Vue篇

 1.对vue的理解,他有什么特点,vue为什么不能兼容IE8及以下浏览器 vue是一套用于构建用户界面的渐进式框架,核心是一个响应的数据绑定系统 vue是一款MVVM框架,基于双向绑定数据,当数据发生变化时候,vue自身会进行一些运算 特点:简洁轻量.数据驱动.组件化.模块友好 vue.js使用了IE8无法模拟的 ECMAScript 5 特性,没有替代方案 2.简述Vue双向数据绑定的原理 主要是通过Object对象的defineProperty属性,重写data的set和get函数来实现的

前端面试题整理—React篇

1.说一下React React是Facebook 开发的前端JavaScript库 V层:react并不是完整的MVC框架,而是MVC中的C层 虚拟DOM:react引入虚拟DOM,每当数据变化通过reactdiff运算,将上一次的虚拟DOM与本次渲染的DOM进行对比,仅仅只渲染更新的,有效减少了DOM操作 JSX语法:js+xml,是js的语法扩展,编译后转换成普通的js对象 组件化思想:将具有独立功能的UI模块封装为一个组件,而小的组件又可以通过不同的组合嵌套组成大的组件,最终完成整个项目

前端面试题 -- JS篇

前端面试题 -- JS篇 类型 1.js中有哪些数据类型,并解释清楚原始数据类型和引用数据类型 js中共有null,undefined, string,number,boolean,object六种数据类型. 原始数据类型: null,undefined, string,number,boolean 引用数据类型:object 两者的区别:1)值存储方式不同: 原始数据类型:将变量名和值都存储在栈内存中 引用数据类型:将变量名存储在栈内存中,将值存储在堆内存中,并在栈内存中存储值的地址,该地址指