您的位置:首页 > Web前端 > JavaScript

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

2015-02-08 10:13 369 查看
本文的目的:巩固基础,数组的声明和常见操作

本文知识点:数组的栈方法(后添加后删除):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]);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: