创建数组
var array=[1,34,5654,46,32,75];
//获取属性中元素的个数
console.log(array.length);
//遍历
for(var i=0;i<array.length;i++){
console.log(array[i]);
}
- 动态初始化,动态空间,没有手动赋值,系统默认值为undefined
var array2=new Array(5);
for(var i=0;i<array2.length;i++){
console.log(array2[i]);
}
console.log("-------------")
//赋值
array2[1]=21;
array2[2]="34";
array2[3]=true;
array2[4]=64;
for(var i=0;i<array2.length;i++){
console.log(array2[i]);
}
数组的增删
- 栈方法:push() pop():向数组的最后添加一个元素/删除数组的最后一个元素,并返回处理后的数组
- 队列方法:unshift() shift():向数组的最前面添加一个元素/删除数组的第一个元素,返回处理之后的数组
注意:shift与delete的不同。使用delete删除数组元素后数组的长度不改变,其他元素的位置也不改变,该数组变为稀疏数组
- Array.concat():先创建当前数组的一个副本,然后将接收的元素(可以是数组)添加到数组末尾,返回新构建的数组。所以该方法不会对原数组产生影响,可以连接两个或者多个数组并将结果返回
concat()中的参数是参数时,连接的是数组中的元素而不是数组本身
var arr=[1,2,3]
console.log(arr.concat([4,5],[6,7]))//[1,2,3,4,5,6,7]
console.log(arr.concat(4,[5,[6,7]]))//[1, 2, 3, 4, 5, [6,7]]
- splice():可以在数组删除或者插入元素,与concat不同的是splice会修改原数组
splice()的第一个参数指定插入或者删除的起始位置;第二个参数指定要删除的元素的个数,如果不指定默认到数组末尾;随后的任意个数的参数为要插入的元素
var arr=[1,2,3,4,5,6,7]
console.log(arr.splice(2))//[3, 4, 5, 6, 7] 返回删除的部分
console.log(arr)//[1, 2] 原数组修改
arr.splice(2,0,3,4)
console.log(arr)// [1, 2, 3, 4]
其他方法
可以在sort()中添加比较函数指定排序规则。回调函数需要指定两个形参,浏览器会分别使用数组中的元素作为实参调用函数,每次使用哪个元素不确定。
但是可以确定a在b前面,浏览器会根据回调函数的返回值确定元素的顺序,
返回值大于0则元素交换位置;小于等于0位置不变
var array=[2,4,5,1,3,9,6,8,7];
array.sort(function (a,b) {
return a-b;//升序排列
});
console.log(array);//1,2,3,4,5,6,7,8,9"
array.sort(function (a,b) {
return b-a;//降序
});
console.log(array);//9,8,7,6,5,4,3,2,1"
- join("-")以特殊符号将数组的元素连接起来转换为字符串形式并返回,不会原数组产生影响
var arr1=[1,2,3]
var result=arr1.join("~");
console.log(result);//1~2~3
- reverse():将数组中的元素颠倒顺序,返回逆序的数组。不生成新的数组,而是在原来的数组基础上重新排序
var arr1=[1,2,3]
var result=arr1.reverse();
console.log(result);//[3, 2, 1]
- slice(起始位置,结束位置):返回数组中指定的片段或者子数组,包含起始位置,但不包含结束位置;如果不指定第二个参数,则截取到数组的最后位置
- toString():将数组转换为字符串,并且每项以逗号分开
- toLocaleString():将数组转换为本地数组并返回结果 toLocaleDateString()返回本地日期格式的规范的字符串
- valueOf():返回数组本身
var arr=[1,2,3]
console.log(arr.toLocaleString());//1,2,3
// console.log(new Date().toLocaleDateString());//2019/7/26
console.log(arr.toString());//1,2,3
console.log(arr.valueOf());//(3) [1, 2, 3]
ES5中新增方法
- 1、forEach(function(){val,index,arr},thisValue):注意区分:JQ中的$each(function(index,val,arr))
var arr=["A","B","C","D"]
arr.forEach(function (val,index,arr) {
console.log(val);//["A","B","C","D"]
})
注意:forEach()无法在所有元素传递给调用的函数之前终止遍历;如果要提前终止只能放在try代码块中,并能抛出一个异常
var arr=['yellow','green','red','blue']
try{
arr.forEach(function(val){
if (val==='red') {
forEach.break=new Error('stop iteration')
}else{
console.log(val)//'yellow' 'green'
}
})
}
catch(e){
console.log(e.message)
}
- 2、map():将调用的数组中的每一个元素传递给指定的函数,并返回一个数组,数组值为原数组元素调用函数处理后的值
let arr=[1,2,3,4]
let res=arr.map(val=>{
return val*2 //[2,4,6,8]
})
- 3、filter():返回过滤后的数组,不会改变原数组。(用于数组的过滤)
let arr=[1,2,3,4]
let res=arr.filter(val=>{
return val<3
})
console.log(res)//[1,2]
- 4、every与some:对数组应用指定的函数进行判断返回true或false
every():当数组的元素都返回true才返回true
some():当数组中有一个元素返回true就返回true
当every和some方法确定返回值后就停止遍历
let arr=[1,2,3,4]
console.log(arr.every(val=>{//false
return val>1
}))
console.log(arr.some(val=>{ //true
return val>1
}))
- 5、indexOf()与lastIndexOf():从前至后/从后至前搜索指定的元素,返回搜索到的第一个索引值,没有找到返回-1
第一个参数:要搜索的元素
第二个参数:可选,搜索的起始位置,不指定按照默认值
let arr=[1,2,3,2]
console.log(arr.indexOf(2))//1
console.log(arr.lastIndexOf(2))//3