12、JavaScript 数组

使用单独变量名来存储一系列的值

数组声明方式:

1、 通过new运算符创建数组;

()内可以传入任意的数据

var arr=new Array(10,20,'hello')

2、 省略new运算符创建数组;

()内可以传入任意的数据

var arr=Array(10,20,'hello')

注:上述两种方法,传入的参数只有一个,并且是数字的时候,直接声明的长度为第一个参数值的空数组。
 
3、 直接通过常量赋值;

var arr=[10,20,'hello']

 

数组属性

数组.length 返回数组[元素]的个数

元素:将数组中存储的每一个数据,叫做数组

访问数组的元素:数组[下标] 下标0开始

数组的遍历方法

for循环

for(var i=0;i<arr.length;i++){


    console.log(arr[i])
}

for …in 快速遍历 ,快速枚举

对象一般使用for in遍历,不过for in遍历会把原型上的属性和方法给遍历出来。for in只遍历键名

执行速度比for快,安全级别比较低。快在不需要判断

var arr=[10,20,'hello']
for( index in arr){
   
     
	console.log(arr[index])
}

Es5新增的遍历

forEach() 循环

格式:数组.forEach(function(item,index,arr){…})

缺点:屏蔽了初学者对循环的理解

item当前遍历的元素;index当前遍历到元素的下标;arr原数组
 
map() 会遍历当前数组,然后调用参数中的方法,返回当前方法的返回值

格式:数组.map(function(item,index,arr){…})

功能:映射,根据固定的运算公式,将运算结果,放在对应的下标当中

item当前遍历的元素;index当前遍历到元素的下标;arr原数组

返回值:更改原数组中的每个元素新组成的数组

var arr=[10,20,'hello']
    var newarr=arr.map(function(item,index,arr){


return item=0   //映射关系
})
console.log(newarr,arr)

 
filter()过滤

格式:数组.filter(function(item,index,arr){…})

功能:过滤出符合条件的元素

返回值:符合条件的元素组成的新数组

item当前遍历的元素;index当前遍历到元素的下标;arr原数组

var arr=[10,20,'hello']
var newarr=arr.filter(function(item,index,arr){


    return typeof item=='number'  //过滤条件
})
console.log(newarr,arr)

 
some()

格式:数组.some(function(item,index,arr){…})

item当前遍历的元素;index当前遍历到元素的下标;arr原数组

功能:查找是否有符合条件的元素(存在一个即可)

返回值:符合条件返回true,不符合条件返回false。

注:短路操作,只要找到一个符合条件的元素,后面的循环就停止了。

var arr=[10,20,'hello']
var newarr=arr.some(function(item,index,arr){


    console.log(item)
    return typeof item=='number'  //条件
})
console.log(newarr,arr)

 

every()

格式:数组.every(function(item,index,arr){…})

item当前遍历的元素;index当前遍历到元素的下标;arr原数组

功能:查找每一个元素是否都符合条件(每一个)

返回值:每一个都符合条件返回ture,只要有一个不符合返回false

注:短路操作:只要有一个不符合条件的,就返回false,结束循环

var arr=[10,'hello',20]
var newarr=arr.every(function(item,index,arr){


    console.log(item)
    return typeof item=='number'  //条件
})
console.log(newarr,arr)

 
reduce()归并

格式:数组.reduce(function(prev,next,index,arr){…})

prev:第一次下标为0元素,第二次开始:上一次遍历表达式的值

next:从下标1开始,当前遍历的元素

index:是next的下标

arr:当前数组本身

功能:按照return 后的条件 实现数组归并

返回值:合并的数据
注:遍历的次数是当前数组长度-1

var arr=[10,20,30,40,50]
    var res=arr.reduce(function(prev,next,index,arr){


        console.log(prev,next,index)
        return prev + next; 
    })
    console.log(res)

 
补充: 将伪数组转成真实数组 :Array.from()
判断是否是数组:Array.isArray(对象)