`

面试题数组篇(1)

阅读更多
 
前端面试中,数组是少不了的。因为数组使用度比较频繁,我在项目中就经常使用。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中了
 
第二种方法:
先说一下思路:使用正则表达式,匹配字符串,同时计数。
 
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;
    }
}

 

 

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);
 
分享到:
评论

相关推荐

    前端高频面试题终结篇v4.pdf

    前端高频面试题终结篇v4.pdf 本资源摘要提供了前端开发工程师高频面试题的整理,涵盖了 JS、框架、面试题等多个方面的知识点。 一、JS 相关 1. 闭包:闭包是指函数内部可以访问其外部函数的变量的函数。闭包可以...

    JAVA面试题集(基础篇,高级篇 编程篇)

    以下是对给定的三个部分——"JAVA面试题集基础篇"、"JAVA面试题集高级篇"、"JAVA面试题集编程篇"的详细解析。 **JAVA面试题集基础篇** 基础篇主要关注Java语法和核心概念。这部分可能会包含以下几个方面的知识点:...

    前端高频面试题终结篇 vue面试题

    前端高频面试题终结篇 vue面试题 Vue.js 是一个流行的前端框架,它可以帮助开发者快速构建复杂的前端应用程序。本文将总结 Vue.js 面试题,涵盖 JavaScript、Git 和 Vue.js 相关知识点。 JavaScript 相关 1. 闭包...

    【电子版】校招面试题库(附答案与解析)C+++篇.rar

    通过阅读《电子版》校招面试题库(附答案与解析)C+++篇.pdf,你可以系统地复习这些知识点,并通过提供的面试题和解析来检验自己的理解程度,提高面试准备的效率。对于每个知识点,不仅要记住概念,还要能够应用到...

    2019js数组前端经典算法面试题.docx

    本篇文章将详细探讨文档中提及的几个经典的JavaScript数组算法面试题。 首先,我们来看第一个问题:求斐波那契数列的前20个数字。斐波那契数列是一个序列,其中每个数字是前两个数字的和。数学上,它可以通过递归...

    鹅厂面试题、大厂面试题、JVM面试题

    在这篇文章中,我们将讨论鹅厂面试题、大厂面试题、JVM面试题,并对每个问题进行详细的解释和分析。 首先,让我们来讨论 TCP 和 UDP 的区别。TCP 是一个全双工协议,这意味着它可以同时发送和接收数据,而 UDP 则是...

    算法面试题实用知识库分享

    算法笔记_面试题_1.爬楼梯 本篇笔记主要介绍了爬楼梯问题的解决方法,包括问题分析、递归公式的推导等。这个问题是算法面试题中的一道经典题目,开发者需要掌握这个问题的解决方法。 算法笔记_面试题_2.移动零 本...

    c/C++面试题大全--96页

    【C/C++面试题大全--96页】这篇文章主要探讨了C/C++编程语言中面试时常见的技术问题,特别是关于字符串处理和内存管理的题目。文章的目的是通过深入解析这些问题来提升面试者的技能水平和对基础知识的理解。 首先,...

    C/C++程序员面试指南.杨国祥(带详细书签).pdf

    面试题1:链表和数组有什么区别 面试题2:寻找单链表中间结点 面试题3:怎样把一个单链表反序 10.2 单循环链表 面试题4:根据需求建立一个单向循环链表 面试题5:检测一个较大的单向链表是否带环 10.3 双向链表 面试...

    hashmap面试题_hashmap_

    本篇将围绕HashMap的相关面试题,从基础概念到高级应用进行详尽解析。 一、HashMap概述 HashMap是一个基于哈希表实现的键值对存储结构,它提供了快速的插入、删除和查找操作,平均时间复杂度为O(1)。HashMap非线程...

    【电子版】校招面试题库(附答案与解析)java篇.zip

    1. 数据结构与算法:数组、链表、树、图,排序算法,查找算法等。 2. 网络协议:TCP/IP、HTTP,以及网络编程基础知识。 3. 架构设计:微服务、分布式、高并发等系统架构设计原则。 这份资料全面而深入,不仅包含了...

    c#面试题集锦

    在这篇文章中,我们将讨论一些常见的C#面试题,并提供解答。这些问题涵盖了C#的基本概念、类和接口、结构体、异常处理、集合等方面。 1. const和readonly的区别 const和readonly都是用于定义常量的关键字,但是...

    【面试必备】JAVA 最常见面试题全解析 附 PDF.pdf_java面试_javapdf_java_面试题_

    这份"【面试必备】JAVA 最常见面试题全解析 附 PDF"文档,正是为准备Java面试的开发者量身定制的资源,涵盖了Java的基础到高级知识点,旨在帮助你全面理解和掌握Java技术。 一、基础篇 1. Java语法:包括变量、数据...

    java面试题基础篇

    Java面试题基础篇涵盖了许多核心概念和技术,是Java开发者在面试过程中可能会遇到的关键知识点。以下是一些主要的Java基础知识,这些知识通常会在面试中被询问: 1. **Java语法基础**: - 变量、数据类型:了解...

    2021腾讯华为、前端面试题集(基础篇)1

    "2021腾讯华为、前端面试题集(基础篇)1" 本资源摘要信息主要涵盖了前端开发相关领域的面试题,涵盖了多个方面的知识点,包括 Vue、Vuex、ES6、React、Redux、JS、正则表达式、浏览器/HTML/CSS 等。下面我们将逐一...

    阿里面试 - 蚂蚁金服前端面试题

    在本篇文章中,蚂蚁金服提供的前端面试题涉及多个知识点,包括防抖(debounce)、进制转换、模板引擎、事件订阅机制以及数组转换等。下面将依次详细介绍这些知识点: 防抖(debounce): 防抖是一种减少事件频繁...

    前端面试题JS篇.pdf

    这份"前端面试题JS篇.pdf"涵盖了JS的基础知识、高级特性以及实际应用中的常见问题,旨在帮助求职者准备前端面试。以下是根据标题和描述提炼出的JavaScript相关知识点: 1. **基础语法**:包括变量声明(var、let、...

    搜狐java面试题

    在本篇文章中,我们将详细解析搜狐Java面试题,涵盖了Java基础知识、Java面向对象编程、Java异常处理、Java多线程编程等方面的知识点。 问题1:访问控制 在Java中,访问控制是一种机制,用于控制成员变量的访问...

    2010_[1].NET面试题整理之基础篇

    在这个基础篇的.NET面试题中,我们涉及到了面向对象编程、访问修饰符、ADO.NET的主要对象、页面间传递值的方法、委托和事件、重载与override的区别、C#中的索引器以及三层架构的概念。 1. **面向对象编程**:面向...

Global site tag (gtag.js) - Google Analytics