//递归:函数自己调用自己,要有临界点(结束条件)

//递归的使用场景:

1.快速排序使用递归

2.对象的深拷贝,也可以使用递归

3.二级、多级菜单

4.nodejs对文件的便利

//递归能做什么:

循环能做的事情,递归都能实现;但是递归的性能比循环要弱

递归就是代码重复使用

1.什么是数组:在js里的数组,就是一组任意类型的数据,可以动态的扩容

2.数组的创建方式:

//数组的字面量表达式(推荐)
var arr=[ ];
//构造函数创建数组
var arr=new Array();
//var arr=Array();

3.数组的类型

var arr=[ ];
console.log(typeof((arr)));----object

4.如何判断是否为数组

Array. isArray( )var str = "abc12";console. log( Array. isArray(str));//falseconsole.log( Array. isArray([]));//true

5.数组的初始化

var names=[“张三”,“李四”,“王五”];声明数组,并且赋予初始值

6.数组length属性

1.length表示数组的长度,长度被修改,也可取值

var arr =[];arr.length = 10console. log(arr);console. log(arr .length);

2.修改数组的长度,会影响数组里的成员

//数组长度修改后,会丢失数组里的成员var names = ["张三"," 李四"J "王五"];names.length = 1console. log(names);“张三”names.length = 3console. log(names);长度3,“张三”

7.数组的方法

1)push()往数组的最后位置添加成员,返回数组新长度

var arr = [11,"你好", true];console.1og(arr. push("刘德华","周杰伦"));console.log(arr);

2)pop()删除数组最后位置的成员,返回被删除的元素

var arr = [11,"你好", true];console.1og(arr.pop());console.log(arr);

3)shift()删除数组的第一位,返回数组被删除的元素

4)unshift()往数组第一位添加成员,返回数组新长度

FIFO先进先出
push+pop或者unshift+shift
LIFO后进先出
push+shift或者unshift+pop

5)sort()排序

//如果数组成员大于10,sort排序就会失效-----数组的sort方法,是根据ASCII码,进行排序-----就需要在sort方法里加入一个回调函数----回调函数 a-b升序,b-a降序

6)reverse ()倒叙

7)splice()

a:删除;删除返回一个新数组,包裹被删除的元素

var arr=[11,22,33,44,55]
 console.log(arr.splice(3,1))
 console.log(arr)

b:替换

var arr=[11,22,33,44,55]
 arr.splice(3,2,"sisi")
 console.log(arr)

c:插入

var arr=[11,22,33,44,55]
 arr.splice(3,0,"AA")
 console.log(arr)

8)slice()截取,不会改变原来的数组

//也可以实现数组的拷贝 ---------slice(0)
 var arr=[11,22,33,44,55]
 console.log(arr.slice(2,4))

9)concat()

a:合并数组的成员,返回一个新数组

var arr1=[11,22,33]
 var arr2=['aa','bb','cc']
 var arr3=arr1.concat(arr2,true)
 console.log(arr3)

b:数组的浅拷贝(复制)

var arr1=[11,22,33]
 var arr2=[].concat(arr1)
 arr2[0]="AA"
 console.log(arr2)
 console.log(arr1)

c:使用slice(0)实现数组的浅拷贝(复制)

var arr = [11, 22,33, 44, 55];var arr1 = arr.slice(0)console.log(arr1[0] = "AA");console.log(arr1);console.log(arr);

10)join()默认是以“,”隔开,也可以指定格式,它返回的是字符串

会改变原来数组的:

push(), pop(), shift(), unshift(), sort(), reverse(), splice()

不会改变原来的数组:

slice(),concat(),join()

数组的下标,从0开始

通过下标,进行取值和复制

for...in和for循环遍历数组有什么区别?

for...in的key是字符串

for根据length的值决定遍历的次数

for...in根据内容,决定遍历的次数