Hello小伙伴们,经过了最近的一些介绍,我们今天又返回了JS,为什么呢?我们主要是对数据结构进行一下介绍,很多小伙伴认为对于前端来说数据结构不重要,曾经的我也是这么认为,甚至觉得面试官面试数据结构就是多此一举,但是在后面的搬砖过程中发现,自己真的错了。对于前端宝宝们来说,最熟悉的语言就是JS了,而且leetcode也是支持JS的,所以今天兔妞就和大家一起看看数据结构与JS的CP会擦出什么样的火花吧~
基本编程模块回顾
想要开始数据结构之旅,我们首先要保证自己编程模块还记得很熟练。先让我们回忆一下这些模块吧~
1)声明和初始化变量
var rabbitNum;
2)算术运算
运算符:+ - * / % (还记得都怎么用吗
)
函数:Math.sqrt(), Math.abs()
3)判断结构
if(){
...
} else{
...
}
switch(){
case "1":
...
break;
...
}
4)循环结构
while(){
...
}
for(){
...
}
5)函数
function rabbitFamily(){
...
}
6) 递归:简单些说就是设置一个终止条件,在没达到条件之前反复自己调用自己。
function findRabbit(index){
if(index == 6){
return index;
}else{
return findRabbit(index+1);
}
}
findRabbit(1);
数据结构的开端——数组
复习好了,我们就开始第一个结构数组吧,其实我们之前也聊过数组了,就也权当复习一下吧~
1)创建数组
var rabbits=[];
var rabbits=['rabbit1', 'rabbit2', 'rabbit3'];
var rabbits = new Array();
var rabbits = new Array('rabbit1', 'rabbit2', 'rabbit3');
var rabbits = new Array(10);
2) 读写数组
对于数组最多的操作,兔妞觉得就是遍历数组了。
for(var i=0; i<arr.length; i++){
console.log(arr[i]);
}
3) 字符串与数组的相互转换
var rabbitFamily = "Rabbit father rabbit mother and rabbit baby";
var arr = rabbitFamily.split(" ");
console.log(arr); //['Rabbit', 'father', 'rabbit', 'mother', 'and', 'rabbit', 'baby'
var newRabbitFamily = arr.join(" ");
console.log(newRabbitFamily); // "Rabbit father rabbit mother and rabbit baby"
4)数组的操作
连接数组:arr1.concat(arr2);
截取数组:arr1.splice(3,3);
添加元素(尾):arr.push(1);
添加元素(头):arr.unshift(0);
删除元素(尾):arr.pop();
删除元素(头):arr.shift();
数组排序(顺序):arr.sort();
数组排序(倒序):arr.reverse();
5)迭代器方法:什么叫迭代器方法呢?就是会对数组中每个元素应用一次函数,然后返回一个新的数值、数组等。
forEach():接受一个函数作为参数,并对数组中每个元素使用这个函数
every():接受一个返回值类型为布尔的函数,对每个元素使用此函数,所有结果均为true则为true
some():类似于every(),数组中所返回的结果有一个为true,some即为true
reduce():该方法会从一个累加值开始,不断对累加值和 数组中的后续元素调用该函数,直到数组中的最后一个元素,最后返回得到的累加值。
map():接受一个函数作为参数,并对数组中每个元素使用这个函数,但是返回的是一个数组
filter():filter() 和 every() 类似,传入一个返回值为布尔类型的函数。和 every() 方法不同的是, 当对数组中的所有元素应用该函数,结果均为 true 时,该方法并不返回 true,而是返回 一个新数组,该数组包含应用该函数后结果为 true 的元素