本文的目的:巩固基础,数组的声明和常见操作
本文知识点:数组的栈方法(后添加后删除):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]); } }