js自学(1)-数组

数组是零索引(第一个值的索引为0),一组数值的有序序列。数组是对一组同一类型的(例如String)相关对象的便利存储,但现实中,一个数组中可以包含多种类型的对象,包含其他数组。

创建一个数组,有两种方法:使用对象构造器,或者是直接声明,为变量分配一组数值。

使用对象构造器定义数组:

 
 
  1. var myArray1 = new Array("你好","极客","标签");

直接声明:

 
 
  1. var myArray2 = ["你好","极客","标签"];

通常我们更愿意使用直接声明,更多信息参见谷歌代码指南

如果数组的值是不确定的,你可以先定义一个空的数组,然后用方法或者是使用索引添加子元素。

 
 
  1. // 创建空的数据
  2. var myArray = [];
  3. // 在索引0中添加“你好”
  4. myArray.push("你好");
  5. // 在索引1处添加“极客”
  6. myArray.push("极客");
  7. // 在索引2处添加“标签”
  8. myArray[2] = "标签";

 .push()方法将元素加入到数组的最末。你可以用索引直接添加元素,没有声明的索引项是undefined。例如下面这个例子中:

 
 
  1. var myArray = [];
  2. myArray[ 0 ] = "你好";
  3. myArray[ 1 ] = "极客";
  4. myArray[ 3 ] = "标签";
  5. console.log( myArray ); // [ "你好", "极客", undefined, "标签" ];

 如果数组的大小是未知的,.push()用起来更加安全一些。对元素的赋值和取值都可以用索引。如下例所示:

 
 
  1. var myArray = ["你好","极客","标签"];
  2. console.log(myArray[2]); // "标签"

数组方法和属性

.length

.length属性定义了一个数组中有多少元素,通常用于循环遍历中,除了在for/in循环中,在for/in循环中,不需要用数组长度来指定遍历次数。

 
 
  1. var myArray = ["你好","极客","标签"];
  2. for (var i = 0; i < myArray.length; i++) {
  3. console.log( myArray[i] );
  4. }

.concat()

连接两个以上的数组。

 
 
  1. var myArray = [ 1, 2, 3 ];
  2. var myOtherArray = [ 5, 6, 7 ];
  3. var wholeArray = myArray.concat( myOtherArray ); // [ 1, 2, 3, 5, 6, 7 ]

.join() 

.join()方法是返回一个字符串,字符串是将数组中元素连接起来,其中join()的传参是用作数组元素连接时的连接符,没有传参,则所有元素默认用逗号连接。

 
 
  1. // 连接元素
  2. var myArray = [ "你好", "极客", "标签" ];
  3. // 默认的连接分隔符是逗号
  4. console.log( myArray.join() ); // "你好,极客,标签"
  5. // 任何字符都可以作为连接分隔符
  6. console.log( myArray.join( " " ) ); // "你好 极客 标签";
  7. console.log( myArray.join( "!!" ) ); // "你好!!极客!!标签";
  8. // 也可以用空作为连接分隔符,那么元素间没有分隔符
  9. console.log( myArray.join( "" ) ); // "你好极客标签"

 .pop() 

.pop()与.push()的作用正好相反,将最后一个元素从数组中移除出来。

 
 
  1. var myArray = [];
  2. myArray.push( 0 ); // [ 0 ]
  3. myArray.push( 2 ); // [ 0 , 2 ]
  4. myArray.push( 7 ); // [ 0 , 2 , 7 ]
  5. myArray.pop(); // [ 0 , 2 ]

.reverse()

该方法将数组中的元素逆序排列。

 
 
  1. var myArray = [ "你好", "极客", "标签" ];
  2. myArray.reverse(); // [ "标签", "极客", "你好" ]

.shift()

移除数组中的第一个元素。利用.push()和.shift(),你可以创建先进先出队列。

 
 
  1. // shift(),push()创建队列
  2. var myArray = [];
  3. myArray.push( 0 ); // [ 0 ]
  4. myArray.push( 2 ); // [ 0 , 2 ]
  5. myArray.push( 7 ); // [ 0 , 2 , 7 ]
  6. myArray.shift(); // [ 2 , 7 ]

 .slice()

提取原有数组中的一部分放入新的数组。此方法只有一个参数,既开始的索引。

 
 
  1. // 切割
  2. var myArray = [ 1, 2, 3, 4, 5, 6, 7, 8 ];
  3. var newArray = myArray.slice( 4 );
  4. console.log( myArray ); // [ 1, 2, 3, 4, 5, 6, 7, 8 ]
  5. console.log( newArray ); // [ 5, 6, 7, 8 ]

 .splice()

移除一定数量的元素,并且在指定位置插入新的元素。该方法需要至少3个参数:

 
 
  1. myArray.splice( index, length, values, ... );
  • index - 指定插入移除的索引位置
  • length - 需要移除的元素个数
  • values - 要插入到指定索引位置的元素值

示例:

 
 
  1. var myArray = [ 0, 7, 8, 5 ];
  2. myArray.splice( 1, 2, 1, 2, 3, 4 );
  3. console.log( myArray ); // [ 0, 1, 2, 3, 4, 5 ]

.sort() 

对数组进行排序,只需要一个参数,即指定一个比较的方法。如果没有指定比较方法,则默认按照升序排序。

 
 
  1. // 不指定比较方法的排序,默认按照升序排列
  2. var myArray = [ 3, 4, 6, 1 ];
  3. myArray.sort(); // 1, 3, 4, 6
  4.  
  5. // 用比较方法进行逆序排列
  6. function descending( a, b ) {
  7. return b - a;
  8. }
  9. var myArray = [ 3, 4, 6, 1 ];
  10. myArray.sort( descending ); // [ 6, 4, 3, 1 ]

在上例中,descending方法的返回值很重要。如果返回值小于0,那么a的索引排在b的索引前面,反之,大于0,b排在a前面。如果返回值等于0,两个元素的索引相等。

.unshift()

在数组的最前端插入元素。

 
 
  1. var myArray = [];
  2. myArray.unshift( 0 ); // [ 0 ]
  3. myArray.unshift( 2 ); // [ 2 , 0 ]
  4. myArray.unshift( 7 ); // [ 7 , 2 , 0 ]

.forEach()

现在浏览器大多支持用.forEach()方法遍历数组,你可以用forEach方法对每一个数组中的元素进行同样的操作。

该方法最多需要3个参数:

  • element - 元素本身
  • index - 数组中元素的索引
  • array - 数组本身

这三个参数都非必要参数,但是大多数情况下,你会需要至少用到element变量。

 
 
  1. // 本地 forEach()方法
  2. function printElement( elem ) {
  3. console.log( elem );
  4. }
  5.  
  6. function printElementAndIndex( elem, index ) {
  7. console.log( "索引 " + index + ": " + elem );
  8. }
  9. function negateElement( elem, index, array ) {
  10. array[ index ] = -elem;
  11. }
  12. myArray = [ 1, 2, 3, 4, 5 ];
  13. // 打印所有的元素
  14. myArray.forEach( printElement );
  15. // 打印"索引 0: 1", "索引 1: 2", "索引 2: 3", ...
  16. myArray.forEach( printElementAndIndex );
  17. // myArray的元素取反: [ -1, -2, -3, -4, -5 ]
  18. myArray.forEach( negateElement );
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值