数组

创建数组

  • 静态初始化
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:排序
可以在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
  • 6、reduce():
posted @ 2019-12-20 01:41  我就是要学习  阅读(168)  评论(0编辑  收藏  举报