Javascript入门学习第四篇 js对象和数组第1/2页

问题描述:

上篇文章讲了js中的变量,表达式,和运算符 还有一些 js 语句. 这章我们来探讨js中的对象和数组。


7, 添加数组的内存使用:
   a[10] =  “test” ; //添加新的元素
内存的使用:
比如:
a[0] = “1” ;
a[10] =” 10” ;
那么js值给下标为0 和10的元素分配内存,中间的9个元素不被分配;

注:数组也可以添加到对象中;
比如;
var a = new Circle(1,2,3);
a[0]= “test” ;
这个例子定义了一个名为” 0 “的新对象属性。
只将数组元素添加到一个对象中并不会使它成为数组。

8, 删除数组:
var a = [1,2];
 delete a[0];
 alert(a[0])  //输出 undefined
 alert(a[1])  //输出 2
由例子可以看出,delete删除其实没有真正删除,只不过把元素设置为undefined; 

如果要真正删除,可以使用Array.shift(),等方法。
比如:
var a = [1,2];
 delete a[0];
 alert(a[0])  //输出 undefined
 alert(a[1])  //输出 2
 a.shift();  //删除数组的第一个元素
 alert(a[0])  //输出 2
 alert("length:"+a.length);
 alert(a[1])  //输出 undefined ;   1已经被删除了,其实数组已经的长度只有 1 了;

9,数组的length:
a[49] = “a”;
// 那么这个数组的长度是  50  ;

length属性经常用于遍历数组元素;
比如:
   var  a  = [“a” , “b “ ,”c” ];
for(var i = 0 ; i< a.length ; i++){
alert(a[i]);
}

这个是在假定元素是连续的,如果不是这种情况:
必须检测每个元素是否被定义  : 比如:
for(var i = 0 ; i< a.length ; i++){
if(a[i]){ 
alert(a[i]); 
}
}

多维数组: a[i][j] ;


10,数组的一些方法:
 1):join() 方法:
把一个数组的所有元素都转换成字符串。
比如:var  a  = [1,2,3];
    var s =   a.join();   // 输出 s==1,2,3
 当然也可以 指定一个分隔符;
比如;
   s = a.join(“,”);  
这个方法跟String.split()相反, split()将一个字符串分割成几个片段来创建数组;

2):reverse () 方法:
 把一个数组颠倒。
     var  a   = new Array(1,2,3);
a.reverse();
var s  =  a.join();  //s == “3,2,1”

3):sort() 方法:
排序
♂:如果不给传参数,那么按照字母顺序对数组元素排序。
var a = new Array(“ee”,”df”,”b”);
a.sort()
var s = a.join(“, ”);  // s ==  “b, df, ee” 
♂:如果传参数:
比如:
var a = [33,4,1111,222]
a.sort(); // 排序 :  1111 ,222 ,33,4
a.sort(function(x,y){
       return x-y;
});
var s  = a.join(); //输出  4, 33,222,1111

//可以从例子看出,排序如果x > y ,那么第一个参数就排在第2个参数后,
比如;  1111 ,222   -?     1111-222>0  -? 则  222 , 1111
另外注意下 字母排序:因为js是区分大小写,所以排序的时候,把字符统一成大写或者小写,再排序。

4):concat() 方法:
var  a  = [1,2,3];
 a= a.concat(4, [5,6],7);
 a=a.join(); //输出 1,2,3,4,5,6,7
 alert(a)
注意:
如果是数组里面还有数组 ,就不能展开了。
比如:
var a  = [1,2,3];
 a = a.concat(4,[5,[6,6]],7);
 alert(a);  //这个看不出来
 a = a.join("|");
 alert(a);  //分割后,注意有个逗号

-------------------------------------

 var  c  = [1,2,3];
 var  d  =new Array(1,2,3);
alert(c); //1,2,3
alert(d); //1,2,3
//之所以不输出Object ,是因为
//数组是一个具有额外功能层的对象.
//我们记住他的特殊性。

5):slice() 方法:
返回数组某一个片段。跟字符串的substring方法类似。

6):splice() 方法:
首先他跟 slice 方法 只有一个字母的差别,不过用处完全不同。
他可以用来删除。
var a  = [1,2,3];
 a = a.splice(0,2);
 alert(a);  // 输出 1, 2
 a = a.splice(1,2);
 alert(a);  //  输出 2  。 如果是  a = a.splice(0 , 1) ;  输出  1 
 a = a.splice(1,2);
 alert(a);  //  没有删除任何数组 , 输出 空 数组

他也可以插入数组。具体方法:
    var array1 = new Array("1","2","3","4");
    array1.splice(1,0,"5");//在 第2个元素后面,插入 5 ; 如果第2个参数为0,则不删除。
    document.write(array1+"<br>"); //输出  1, 5 ,2 ,3,4
    array1.splice(2,3,"7","8")  // 删除 第3个的 元素后的 3个元素。也就是 第3个,第4个,第5个元素。然后在这个位置上插入7,8
    document.write(array1);//输出  1, 5 ,7,8
注意:和concat()不同,splice并不将他插入的参数展开。也就是如果插入一个数组,他就是插入数组本身,还不是数组的元素。
而concat()插入数组的话,就会把数组展开,插入数组中的元素,不过当插入的数组里
还有数组的时候,就不会展开了。


7):push() 方法和pop()方法:
push(): 将一个或者多个数组 附加到数组的尾部。
pop() : 删除数组的最后一个元素。
var array1 = new Array("1","2","3","4");
    array1.push("5");
    document.write(array1+"<br>"); //输出  1, 2 ,3 ,4,5
    array1.pop()  
    document.write(array1);//输出  1, 2 ,3 ,4

8):unshift() 方法和shift ()方法:
跟push和pop唱反调。。。
unshift (): 将一个或者多个数组 附加到数组的头部。
shift ():删除数组的第一个元素。


数组的一些方法是比较多,看起来也比较烦。所以大家应该有点耐心。
另外可以参考这篇文章;
http://www.cssrain.cn/article.asp?id=438



总结:这章主要讲了对象和数组的一些方法。比较难记和难理解。不过任何事情都是从难到容易的过程。一次没看懂,再看一次。。。书读百遍,其意自现。。。。。。
也许你不需要读一百遍呢.   ^_^。


是不是感觉看了这么多js概念,已经迫不及待的想自己写点例子什么的。好吧。
下章我们 来点实战的。。。。
如果还有不懂,可以google 搜索资料. (