//递归:函数自己调用自己,要有临界点(结束条件)
//递归的使用场景:
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根据内容,决定遍历的次数