资讯专栏INFORMATION COLUMN

前端面试总结--数据结构与算法一

Nosee / 2680人阅读

摘要:对数组中的每一项运行给定函数。将所有的数组元素连接成一个字符串。返回第一个与给定参数相等的数组元素的索引,没有则返回返回在数组中搜索到的与给定参数相等的元素的索引里最大的项。

数组

数组是比较简单的内容,这里介绍数组常用的操作。
数组的创建和初始化非常简单,你可以通过var arr = new Array()或者var arr = new Array("a","b","c")来创建一个数组。当然也可以简单的var arr = [];这也是最通常的用法。

添加和删除元素

需要在数组末端追加元素,我们可以简单的使用number[number.length] = 10;或者位面通常用到的number.push(10)。如果是在数组起始端添加元素,位面可以使用number.unshift(0).
相应的在数组中删除元素,我们可以用number.pop()(从末端删除),或者number.shift()(从起始端删除)。还有我们也可以通过设置数组的长度来删除数组,比如var number = [1,2,3,4];number.length=3;来删除最后一个元素。
这里还有一个很常用的方法来添加,删除和修改元素,同时它也可以克隆数组。这个就是splice.
var number = [1,2,3];
number.splice(1,1,4);//修改index为1的之后1位元素为4
number.splice(1,1,4);//将4添加到index为1的元素后面
number.splice(1,1);//删除index为1后1位的元素
var clone = number.splice(0);//用于克隆数组

数组常用方法

concat--连接2各或者更多数组,并返回结构。

every--对数组中的每一项运行给定函数,如果该函数对每一项都返回true,则返回true.

filter--对数组中的每一项运行给定函数,返回该函数会返回true的项组成的数组。

forEach--对数组中的每一项运行给定函数。

join--将所有的数组元素连接成一个字符串。

indexOf--返回第一个与给定参数相等的数组元素的索引,没有则返回-1

lastIndexOf--返回在数组中搜索到的与给定参数相等的元素的索引里最大的项。

map--对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组。

reverse--颠倒数组中元素的顺序。

slice--传入索引值,将数组对应索引范围内的元素作为新数组返回。

some--对数组中的每一项运行给定函数,如果任一项返回true,则返回true。

sort--按照字母顺序对数组排序,支持传入指定排序方法的函数作为参数。

toString--将数组作为字符串返回

valueOf--将数组作为字符串返回

数组合并

可以通过concat方法来合并多个数组。concat方法可以向一个数组传递数组,对象或者元素。数组会按照该方法传入的顺序连接指定数组。

var zero = 0;
var positive = [1,2,3];
var negative = [-3,-2,-1];
var numbers = negative.concat(zero,positive);
迭代器函数

前面介绍了很多用于迭代数组的函数。下面来举一个例子,有一个数组,它是从1到10.找出数组中的偶数。

var isEven = function(x){
  console.log(x);
  return (x%2==0) ? true : false;
}
var numbers = [1,2,3,4,5,6,7,8,9,10];

首先我们尝试用every.它会迭代数组中的每一个元素,直到返回false。

numbers.every(isEven);  

这样数组numbers的第一个元素是1,它不是偶然,函数返回false。every执行结束了。
然后在看some.它与every类似,只是它运行到true之后停止执行。这样当执行到2的时候,函数返回true便停止了。

numbers.some(isEven);

再看map函数,它会返回每个元素处理后的结果。

var result = numbers.map(isEven);

结果是[false,true,false,true,false,true,false,true,false,true].
还有一个filter方法,它返回的新数组由使函数返回true的元素组成:

var eventNumbers = numbers.filter(isEven); 

这样evenNumbers数组中的元素都是偶数[2,4,6,8,10].
最后再看一下reduce方法。它接受一个函数作为参数,这个函数后4个参数:previousValue,currentValue,index,array.这个函数会返回一个将被叠加到累加器的值,reduce方法停止执行后会返回这个累加值。如果是对一个数组中的所有元素求和,这个方法很有用。

搜索和排序

对于排序我们可以使用sort方法,默认的sort方法会对数字按大小排序,对字符串按字母表排序,比如

numbers.sort()

或者可以自定义排序方法

numbers.sort((a,b)=>{return a-b});

对于自定义字符串的排序

var names = ["Ana", "ana", "john", "John"];
names.sort(function(a,b){
    if(a.toLowerCase()b.toLowerCase()){
        return 1;
    }
    return 0;
}

参考书籍:Learning Javascript Data Structures and Algorithms

推荐一个找vue,angular组件的轮子工厂

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/88392.html

相关文章

  • 前端面试总结--数据结构算法

    摘要:链表前端的面试中,链表还是经常会被问到。这种数据结构非常方便,提供了便利店语法来访问它的元素。参考书籍推荐一个找组件的轮子工厂前端面试总结数据结构与算法一前端面试总结数据结构与算法二前端面试总结数据结构与算法三 链表 前端的面试中,链表还是经常会被问到。所以熟悉链表的结果以及链表操作的方法还是很重要的。说道存储多个元素,数组可能是最常用的数据结构。这种数据结构非常方便,提供了便利店[]...

    superPershing 评论0 收藏0
  • 前端面试总结--数据结构算法

    摘要:结构的实例的方法,用于对每个成员执行某种操作,没有返回值。参考和数据结构推荐一个找组件的轮子工厂前端面试总结数据结构与算法一前端面试总结数据结构与算法二前端面试总结数据结构与算法三前端面试总结数据结构与算法四 集合 集合是由一组无序且唯一的项组成。这个数据结构使用了与有限集合相同的数学概念。 创建一个集合 function Set(){ var items = {}; } ...

    xuexiangjys 评论0 收藏0
  • 前端排序算法总结前端面试题2.0;JavaScript异步编程

    摘要:与异步编程按照维基百科上的解释独立于主控制流之外发生的事件就叫做异步。因为的存在,至少在被标准化的那一刻起,就支持异步编程了。然而异步编程真正发展壮大,的流行功不可没。在握手过程中,端点交换认证和密钥以建立或恢复安全会话。 1、前端 排序算法总结 排序算法可能是你学编程第一个学习的算法,还记得冒泡吗? 当然,排序和查找两类算法是面试的热门选项。如果你是一个会写快排的程序猿,面试官在比较...

    aaron 评论0 收藏0
  • 前端排序算法总结前端面试题2.0;JavaScript异步编程

    摘要:与异步编程按照维基百科上的解释独立于主控制流之外发生的事件就叫做异步。因为的存在,至少在被标准化的那一刻起,就支持异步编程了。然而异步编程真正发展壮大,的流行功不可没。在握手过程中,端点交换认证和密钥以建立或恢复安全会话。 1、前端 排序算法总结 排序算法可能是你学编程第一个学习的算法,还记得冒泡吗? 当然,排序和查找两类算法是面试的热门选项。如果你是一个会写快排的程序猿,面试官在比较...

    ARGUS 评论0 收藏0
  • 前端排序算法总结前端面试题2.0;JavaScript异步编程

    摘要:与异步编程按照维基百科上的解释独立于主控制流之外发生的事件就叫做异步。因为的存在,至少在被标准化的那一刻起,就支持异步编程了。然而异步编程真正发展壮大,的流行功不可没。在握手过程中,端点交换认证和密钥以建立或恢复安全会话。 1、前端 排序算法总结 排序算法可能是你学编程第一个学习的算法,还记得冒泡吗? 当然,排序和查找两类算法是面试的热门选项。如果你是一个会写快排的程序猿,面试官在比较...

    April 评论0 收藏0
  • Deep in JS - 收藏集 - 掘金

    摘要:今天同学去面试,做了两道面试题全部做错了,发过来给道典型的面试题前端掘金在界中,开发人员的需求量一直居高不下。 排序算法 -- JavaScript 标准参考教程(alpha) - 前端 - 掘金来自《JavaScript 标准参考教程(alpha)》,by 阮一峰 目录 冒泡排序 简介 算法实现 选择排序 简介 算法实现 ... 图例详解那道 setTimeout 与循环闭包的经典面...

    enali 评论0 收藏0

发表评论

0条评论

Nosee

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<