首页 > 代码库 > js 数组操作

js 数组操作

toString():把数组转换成一个字符串

toLocaleString():把数组转换成一个字符串

join():把数组转换成一个用符号连接的字符串

shift():将数组头部的一个元素移出

unshift():在数组的头部插入一个元素

pop():从数组尾部删除一个元素

push():把一个元素添加到数组的尾部

concat():给数组添加元素

slice():返回数组的部分

reverse():将数组反向排序

sort():对数组进行排序操作

splice():插入、删除或者替换一个数组元素

 

1.shift

删除原数组第一项,并返回删除元素的值;如果数组为空则返回undefined 

  1. var a = [1,2,3,4,5];   
  2. var b = a.shift(); //a:[2,3,4,5] b:1  

2.unshift

将参数添加到原数组开头,并返回数组的长度 

  1. var a = [1,2,3,4,5];   
  2. var b = a.unshift(-2,-1); //a:[-2,-1,1,2,3,4,5] b:7 

3.pop

删除原数组最后一项,并返回删除元素的值;如果数组为空则返回undefined 

  1. var a = [1,2,3,4,5];   
  2. var b = a.pop(); //a:[1,2,3,4] b:5  

4.push

将参数添加到原数组末尾,并返回数组的长度 

  1. var a = [1,2,3,4,5];   
  2. var b = a.push(6,7); //a:[1,2,3,4,5,6,7] b:7  

5.concat

返回一个新数组,是将参数添加到原数组中构成的 

  1. var a = [1,2,3,4,5];   
  2. var b = a.concat(6,7); //a:[1,2,3,4,5] b:[1,2,3,4,5,6,7] 

6.splice(start,deleteCount,val1,val2,...)

从start位置开始删除deleteCount项,并从该位置起插入val1,val2,... 

  1. var a = [1,2,3,4,5];   
  2. var b = a.splice(2,2,7,8,9); //a:[1,2,7,8,9,5] b:[3,4]   
  3. var b = a.splice(0,1); //同shift   
  4. a.splice(0,0,-2,-1); var b = a.length; //同unshift   
  5. var b = a.splice(a.length-1,1); //同pop   
  6. a.splice(a.length,0,6,7); var b = a.length; //同push 

7.reverse将数组反序 

  1. var a = [1,2,3,4,5];   
  2. var b = a.reverse(); //a:[5,4,3,2,1] b:[5,4,3,2,1]  

8.sort(orderfunction)

按指定的参数对数组进行排序 

  1. var a = [1,2,3,4,5];   
  2. var b = a.sort(); //a:[1,2,3,4,5] b:[1,2,3,4,5]  

9.slice(start,end)

返回从原数组中指定开始下标到结束下标之间的项组成的新数组 

  1. var a = [1,2,3,4,5];   
  2. var b = a.slice(2,5); //a:[1,2,3,4,5] b:[3,4,5]  

10.join(separator)

将数组的元素组起一个字符串,以separator为分隔符,省略的话则用默认用逗号为分隔符

  1. var a = [1,2,3,4,5];   
  2. var b = a.join("|"); //a:[1,2,3,4,5] b:"1|2|3|4|5" 

11.数组是JavaScript提供的一个内部对象,它是一个标准的集合,我们可以添加(push)、删除(shift)里面元素,我们还可以通过for循环遍历里面的元素,那么除了数组我们在JavaScript里还可以有别的集合吗? 

  由于JavaScript的语言特性,我们可以向通用对象动态添加和删除属性。所以Object也可以看成是JS的一种特殊的集合。下面比较一下Array和Object的特性: 

  1. //Array:  
  2. /*新建:*/var ary = new Array(); 或 var ary = [];   
  3. /*增加:*/ary.push(value);   
  4. /*删除:*/delete ary[n];   
  5. /*遍历:*/for ( var i=0 ; i < ary.length ; ++i ) ary[i];  
  6. //Object:  
  7. /*新建:*/var obj = new Object(); 或 var obj = {};   
  8. /*增加:*/obj[key] = value; (key为string)   
  9. /*删除:*/delete obj[key];   
  10. /*遍历:*/for ( var key in obj ) obj[key]; 

12.从上面的比较可以看出Object完全可以作为一个集合来使用,在使用Popup窗口创建无限级Web页菜单(3)中我介绍过Eric实现的那个__MenuCache__,它也就是一个模拟的集合对象。 

  如果我们要在Array中检索出一个指定的值,我们需要遍历整个数组: 

  1. var keyword = ;   
  2.   for ( var i=0 ; i < ary.length ; ++i )   
  3.   {   
  4.   if ( ary[i] == keyword )   
  5.    {   
  6.        // todo   
  7.     }   
  8.   }  

而我们在Object中检索一个指定的key的条目,只需要是要使用: 

  1. var key = ‘‘;   
  2. var value = obj[key];   
  3. // todo  

13.数组字符串化

arrayObj.join(separator); //返回字符串,这个字符串将数组的每一个元素值连接在一起,中间用 separator 隔开。
toLocaleString 、toString 、valueOf:可以看作是join的特殊用法,不常用

 

14.数组的拷贝

arrayObj.slice(0); //返回数组的拷贝数组,注意是一个新的数组,不是指向
arrayObj.concat(); //返回数组的拷贝数组,注意是一个新的数组,不是指向

 

14.prototype 属性

返回对象类型原型的引用。prototype 属性是 object 共有的。

objectName.prototype

objectName 参数是object对象的名称。

说明:用 prototype 属性提供对象的类的一组基本功能。 对象的新实例“继承”赋予该对象原型的操作。

对于数组对象,以以下例子说明prototype 属性的用途。

给数组对象添加返回数组中最大元素值的方法。要完成这一点,声明一个函数,将它加入 Array.prototype, 并使用它。

function array_max()
{
  var i,
  max = this[0];
  for (i = 1; i < this.length; i++)
  {
      if (max < this[i])
      max = this[i];
  }
  return max;
}
Array.prototype.max = array_max;
var x = new Array(1, 2, 3, 4, 5, 6);
var y = x.max();

该代码执行后,y 保存数组 x 中的最大值,或说 6。

15、constructor 属性

表示创建对象的函数。

object.constructor //object是对象或函数的名称。

说明:constructor 属性是所有具有 prototype 的对象的成员。它们包括除 Global 和 Math 对象以外的所有 JScript 固有对象。constructor 属性保存了对构造特定对象实例的函数的引用。

x = new String("Hi");
if (x.constructor == String) // 进行处理(条件为真)。

或者:

function MyFunc {
  // 函数体。
}
y = new MyFunc;
if (y.constructor == MyFunc) // 进行处理(条件为真)。

 

js 数组操作