js基础巩固之--数组的声明与操作

       本文的目的:巩固基础,数组的声明和常见操作

       本文知识点:数组的栈方法(后添加后删除):push(),pop(),数组的队方法(前添加,前删除):unshift(),shift();

                                       数组的排序:反序排列reverse();自定义排列:sort();

                                       数组的操作:数组拼接concat();数组截取slice();数组的删除,插入,和替换splice();

      本文希望:如果本文有地方讲述的不妥,请提出宝贵意见!

      js演示地址:http://runjs.cn/code/zxp29v38   请直接调出控制台,console.log()输出!

      js代码:

    

window.onload = function(){

	// 数组的创建,声明和赋值
	var arrayA = new Array();//普通式声明
		arrayB = new Array(3),//声明数组的长度
		arrayC = new Array('a','b'),
		arrayD = [],
		arrayE = [6,2,3,4],
		arrayF = [,,,,,,],
		arrayG = ['A','B','D','C']
	console.log(Array.isArray(arrayA) && Array.isArray(arrayC)); //判断是否是数组,IE9+
	console.log('arrayB.length='+arrayB.length);//数组的长度
	console.log('arrayE角标未1的值='+arrayE[1]);//数组角标元素的值
	console.log('arrayE角标未4的值='+arrayE[4]);//未定义的值:undefined
	console.log('arrayF长度是:'+arrayF.length+'\n0角标的值:'+arrayF[0]);//arrayF长度是:6,值未undefined

	// 直接新加值
	arrayE[arrayE.length] = '我是新加的值!';
	console.log(arrayE[arrayE.length-1]);//arrayE长度已经增加1

	//数组转化成字符串,
	//注意如果用alert()输出,alert(),只能输出string类型的字符串,如果该类型不是string型,那么会自动加上toString()后输出
	//例如,arrayE中都是number型的数字,那么alert(arrayE)的时候,实际上后台输出的是,arrayE.toString();

	var arrayEstring = arrayE.toString();//把数组转换为字符串,并返回结果。
	console.log(typeof arrayEstring+' ==== '+arrayEstring);//string ==== 6,2,3,4,我是新加的值!

	var arrayGstring = arrayG.toLocaleString();//把数组转换为本地数组,并返回结果。
	// 菜鸟求问:什么是本地数组?什么作用?
	console.log(typeof arrayGstring+' ==== '+arrayGstring);//string ==== A,B,C,D

	//数组的操作,栈方法,push()后增加,pop()后删除
	arrayA.push(123);
	console.log(arrayA.length);//1
	var A = arrayA.pop();
	console.log(A);//取出数组的最后一项,123,
	console.log(arrayA.length);//0

	//数组的操作,队方法,unshift()前增加,shoft(),前删除
	arrayF.unshift('sgift(),前增加');
	console.log(arrayF[0]);
	var B = arrayF.shift();
	console.log(arrayF[0]);

	//重新排序方法,
	//reverse()反向的,a[0]→→a[a.length-1]的变成最后一个,依次反之,
	console.log(arrayG.reverse());
	//sort(),没有参数的情况下,根据属性的值进行从小到大排序,	
	console.log(arrayE.sort());
	console.log(arrayG.sort());
	
	//sort(),根据传递进去的参数进行排序,如果想要位置前置,那么返回-1,后置,那么返回1,相等返回0
	var abc = [1,3,2,5,7,9,7];

	console.log(abc.sort(compare));

	function compare(a,b){
		if (a < b) {
			return 1;
		}else if(a > b){
			return -1;
		}else{
			return 0;
		}
	}

	//疑问:为什么不能直接写abc.sort(-1)

	//操作:concat(),基于当前数组中的所有项,创建新的数组
	var aAC = [1,2,5,7],
		ABC = aAC.concat('yes',['132','gg']);//ABC = aAC的数组集合加上'yes','132','gg';
		console.log(ABC);
		console.log(aAC);//并不会改变原来的数组

	//操作:slice();
	var aBD = aAC.slice(1,2);//选取角标为:1>=X<2
		aDE = aAC.slice(1);//选取角标为:1>=X<aAC.length
	console.log(aBD);
	console.log(aDE);

	//splice(),方法,课实现的功能,删除,插入和替换
	var OArray = [1,3,'yes','5','none'],
		OA     = OArray.splice(1,3);// 1<=X<=3,,,删除,传入两个参数,开始位置到结束位置
		console.log(OA);//输出,3,'yes','5'
		console.log(OArray);//输出1,none,

	//新插入,第一个参数为开始位置,第二个参数为要删除的项数,后面就爱任意个数的新加项
	var OB = OArray.splice(1,0,'新加入','这是真的!',1);//从1开始添加,删除0项,加入后面的项
	console.log(OArray);

	//替换,起始位置,要删除的项,和要新插入的项。新插入的项不必与删除的项相等,如果大于,会删除已有的,插入新加的
	var OBArray = [1,2,3,3,4,5,6,7,8,9,0];

	console.log(OBArray.splice(1,2,'替换1','替换2','替换3'));//删除两项,加入了三项,那么加入的第三项会直接插入进去
	console.log(OBArray);

	//不是值传递,引用传递,数组是对象
	var aa = ['123','456'],
		bb = aa;
	aa.pop();	
	console.log(bb);
	for( var x in aa ){
		console.log( x +'==='+ aa[x]);
	}
}



你可能感兴趣的:(js,数组)