70
数组简介
数组是一个对象
数组和对象的区别
1.区别是数组是使用的索引
2.数组存储的性能 要比普通的对象要好,在开发中我们经常使用数组存储一些数据
当我们使用typeof来检查数组的时候 会发现返回的是object
console.log(typeof arr) //这边会返回object
71
数组字面量
创建输出
方法一:
let arr =[1,2,3,4,5,6]
方法二: 构造函数的形式也是可以的
let arr =new Array(1,2,3)
72
数组的四个方法
--------------------------------------------------------------------------------------------------------
push() 该方法可以向数组的末尾添加一个或者多个元素,并且返回数组的新长度
let arr= ["猪八戒",”孙悟空“,"沙和尚"]
arr.push('唐三藏')
console.log(arr) ///["猪八戒",”孙悟空“,"沙和尚",'唐三藏']
let result=arr.push('唐三藏')
console.log(result) //4 返回数组的新长度
--------------------------------------------------------------------------------------------------------
pop() 该方法可以删除数组的最后一个元素 并且将删除的元素返回
let arr= ["猪八戒",”孙悟空“,"沙和尚"]
arr.pop()
conlose.log(arr) // ["猪八戒",”孙悟空“]
let result=arr.pop()
console.log(result) // ["沙和尚"]将删除的元素返回
--------------------------------------------------------------------------------------------------------
unshift() 向数组的开头添加一个或者多个数据
--------------------------------------------------------------------------------------------------------
shift() 删除数组开头第一个数据 并且返回删除的那个数据
73
数组的遍历
74
数组练习
75
forEach
forEach()方法是js为我们提供的一个数组的遍历的方法 非常好使用
1.最基础的用法
let arr = ["猪八戒",”孙悟空“,"沙和尚"]
arr.forEach(function(a,b,c){
console.log(a,b,c)
}) //a=value b=index c=array
参数一:代表当前正在遍历的元素
参数二:是当前正在遍历的元素的索引
参数三:当前遍历的数组
76
slice
可以用来从数组中提取指定的元素 将截取的元素返回到一个新的数组
参数
1.截取开始的位置的索引
2.截取结束的位置的索引
let arr = ["猪八戒",”孙悟空“,"沙和尚"]
let result = arr.slice(0,2)
console.log(result) //["猪八戒",”孙悟空“]
splice
可以用于删除数组中的指定元素
会将指定元素从原数组中删除 并将删除的元素返回值返回
参数:
第一个:表示开始位置的索引
第二个:表示删除的数量
第三个元素以后:可以传递一些新的元素 这些元素可以插入开始位置
let arr = ["猪八戒",”孙悟空“,"沙和尚"]
let result = arr.splice(0,2)
console.log(arr) //["沙和尚"]
console.log(result) // ["猪八戒",”孙悟空“]
let result = arr.splice(0,2,“牛魔王”,"铁扇扇") //这些新增加的元素 会替换到刚刚删除的地方 并且重新组合为数组
77
数组去重练习
78
数组的剩余的方法
concat
可以连接两个或者多个数组,并且会合并为一个数组
该方法不会对原数组产生影响
let arr = ["猪八戒",”孙悟空“,"沙和尚"]
let arr2 = ["白骨精",”玉兔精“,"蜘蛛精"]
let result =arr.concat(arr2)
console.log(result) //["猪八戒",”孙悟空“,"沙和尚","白骨精",”玉兔精“,"蜘蛛精"]
join
该方法可以将数组转化为一个字符串
let arr = ["猪八戒",”孙悟空“,"沙和尚"]
let result =arr.join() // "猪八戒,孙悟空,沙和尚"
let result =arr.join('-') // "猪八戒-孙悟空-沙和尚"
console.log(result)
reverse
该方法是用来反转数组(前面去后面 后面去前面)
该方法直接修改原来的数组
let arr = ["猪八戒",”孙悟空“,"沙和尚"]
arr.reverse()
console.log(arr) // ["沙和尚",”孙悟空“,"猪八戒"]
sort
对我们的数组进行排序
会影响到原来的数组
我们这个是按照unicode 编码排序的
let arr =["b","d","e","a","c"]
arr.sort();
console.log(arr) //"a,b,c,d,e"
let arr =["3","4","11","2","5"]
arr.sort();
console.log(arr) //"11,2,3,4,5"
79
函数的方法
call 和apply这两个方法都是函数对象的方法,需要通过函数对象来调用
在调用call() 和apply()的时候 可以将一个对象指定为一个参数
function fun (){
alert("我是fun()函数")
}
fun() //执行函数
fun.call()
fun.apply()
80
arguments
在调用函数的时候 浏览器每次都会传递两个隐含的参数
1.函数的上下文对象 this
2.封装实参对象arguments
--argumentss是一个类数组对象
--它可以通过索引来操作数据 也可以获取长度
--在调用函数的时候,我们的传输的实参 都会在我们的arguments保存
function fun(){
console.log(arguments) //[object arguments]
console.log(arguments instanceof Array) //false
console.log(Array.isArray(arguments)) //false
console.log(arguments.length) //0 这边因为没有传输相关的参数
}
fun()
------------------------------------------------------------------------------------------------------------------
function fun(a){
console.log(arguments.length) //1 这边传入一个实参
console.log(arguments[0]) //'hello' 这边会打印出来的
}
fun(‘hello’)
我们这边其实可以不用设置形参 我们直接设置 arguments.就可以进行参数的设置
------------------------------------------------------------------------------------------------------------------
function fun(){
console.log(arguments.callee) //这边直接打印出来 该函数
}
fun()
arguments中有一个属性callee 这个属性对应当前正在执行的函数对象