`
soongbo
  • 浏览: 87090 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

精通js中的Array

    博客分类:
  • JS
阅读更多

关键字: javascript, array

 

一、 学好JavaScript的基础,Array类是必不可少的,也许你每天都在写JS,那么对于Array类,你到底用了多少呢?下面列举一下Array类内置的方法:

1、构造方法:

Js代码 复制代码
  1. var a = new Array(); //创建Array对象   
  2. var a = new Array;//创建Array对象   
  3. var a = new Array(10);//创建Array对象,并指定数组中项的个数   
  4.   
  5. var a = new Array("a","b","c"); //数组a,b,c   
  6. var a = ["a","b","c"];//数组a,b,c   
  7.   
  8. var a =[["a","b","c"],[1,2,3]];//多维数组  
var a = new Array(); //创建Array对象
var a = new Array;//创建Array对象
var a = new Array(10);//创建Array对象,并指定数组中项的个数

var a = new Array("a","b","c"); //数组a,b,c
var a = ["a","b","c"];//数组a,b,c

var a =[["a","b","c"],[1,2,3]];//多维数组

 

2、toString、valueOf

 

Js代码 复制代码
  1. //把数组转化为","号隔开的字符串?很简单:   
  2. var a =["a","b","c"];   
  3. var s = a.toString();   
  4. alert(s);   
  5. var s2 = a.valueOf();   
  6. alert(s2);  
//把数组转化为","号隔开的字符串?很简单:
var a =["a","b","c"];
var s = a.toString();
alert(s);
var s2 = a.valueOf();
alert(s2);

 

 

 

3、join

Js代码 复制代码
  1. //厌倦了","号隔开的字符串?那么:   
  2. var a =["a","b","c"];   
  3. var s = a.join("-");//想用什么隔开呢?在这里写吧,当然","也是可以的   
  4. alert(s);  
//厌倦了","号隔开的字符串?那么:
var a =["a","b","c"];
var s = a.join("-");//想用什么隔开呢?在这里写吧,当然","也是可以的
alert(s);
 
4、split

Js代码 复制代码
  1. //反悔了?倒过来把字符串转化为数组?   
  2. var s = "a-b-c";   
  3. var a =s.split("-");   
  4. alert(a);  
//反悔了?倒过来把字符串转化为数组?
var s = "a-b-c";
var a =s.split("-");
alert(a);
 
5、concat

Js代码 复制代码
  1. //用for循环来合并?没那么麻烦   
  2. var a1 = new Array(1,2,3);   
  3. var a2 = new Array("a","b","c");   
  4. var a3 = a1.concat(a2);   
  5. alert(a3);  
//用for循环来合并?没那么麻烦
var a1 = new Array(1,2,3);
var a2 = new Array("a","b","c");
var a3 = a1.concat(a2);
alert(a3);
 
6、splice

Js代码 复制代码
  1. //删除?很灵活   
  2. var a1 = new Array(1,2,3);   
  3. var a2 = new Array("a","b","c");   
  4. var a3 = a1.concat(a2);   
  5. alert(a3);   
  6. var a4 = a3.splice(1,2); //从a3中删除从下标为1开始的2项,返回删除的结果给a4   
  7. alert(a3+" "+a4);  
//删除?很灵活
var a1 = new Array(1,2,3);
var a2 = new Array("a","b","c");
var a3 = a1.concat(a2);
alert(a3);
var a4 = a3.splice(1,2); //从a3中删除从下标为1开始的2项,返回删除的结果给a4
alert(a3+" "+a4);
 
7、push、pop

Js代码 复制代码
  1. //栈的数据结构要自己来写?不需要   
  2. var a1 = new Array(1,2,3);   
  3. var a2 = a1.push(4); //顶部压入4,返回压入的对象   
  4. alert(a1+" "+a2);   
  5. var a3 = a1.pop(); //顶部弹出顶部第一个对象,返回弹出对象   
  6. alert(a1+" "+a3);  
//栈的数据结构要自己来写?不需要
var a1 = new Array(1,2,3);
var a2 = a1.push(4); //顶部压入4,返回压入的对象
alert(a1+" "+a2);
var a3 = a1.pop(); //顶部弹出顶部第一个对象,返回弹出对象
alert(a1+" "+a3);

 

 

8、shift、unshift

Js代码 复制代码
  1. //倒转栈结构?来得更轻松   
  2. var a = new Array(1,2,3);   
  3. var i1 = a.shift(); //删除数组的第一项,将其作为函数返回值   
  4. alert(i1+" "+a);   
  5. var i2 = a.unshift(1); //加入一项放在数组的第一个位置,原来的项分别往下移一个位置   
  6. alert(i2+" "+a);  
//倒转栈结构?来得更轻松
var a = new Array(1,2,3);
var i1 = a.shift(); //删除数组的第一项,将其作为函数返回值
alert(i1+" "+a);
var i2 = a.unshift(1); //加入一项放在数组的第一个位置,原来的项分别往下移一个位置
alert(i2+" "+a);
 
9、sort,reverse

Js代码 复制代码
  1. //排序?简单,但是它是按照字符串排序的哦尽管是数字   
  2. var a = new Array(1,2,6,3,9,5,7);   
  3. a.sort();   
  4. alert(a);   
  5. var a = new Array(1,2,6,3,9,5,27);//注意这里排序会让你意外哦[1,2,27,3,5,6,9]   
  6. a.sort();   
  7. alert(a);   
  8. //想倒序?   
  9. a.reverse();   
  10. alert(a);  
//排序?简单,但是它是按照字符串排序的哦尽管是数字
var a = new Array(1,2,6,3,9,5,7);
a.sort();
alert(a);
var a = new Array(1,2,6,3,9,5,27);//注意这里排序会让你意外哦[1,2,27,3,5,6,9]
a.sort();
alert(a);
//想倒序?
a.reverse();
alert(a);
 
10、再论splice

Js代码 复制代码
  1. //第6条中已经说明了它的删除功能,它还能插入、替换   
  2. var a =["a","d","e"];   
  3. a.splice(1,0,'b','c'); //在位置1(即d)处删除0个项,并插入['b','c'],即插入   
  4. alert(a);   
  5. a.splice(3,2,'dd','ee'); //在位置3处删2个项,并插入['dd','ee'],即替换   
  6. alert(a);  
//第6条中已经说明了它的删除功能,它还能插入、替换
var a =["a","d","e"];
a.splice(1,0,'b','c'); //在位置1(即d)处删除0个项,并插入['b','c'],即插入
alert(a);
a.splice(3,2,'dd','ee'); //在位置3处删2个项,并插入['dd','ee'],即替换
alert(a);
 
二、再看看判断一个对象是否为Array对象的方法
Js代码 复制代码
  1. isArray: function(object) {   
  2.     return object != null && typeof object == "object" &&   
  3.       'splice' in object && 'join' in object;   
  4.   }  
isArray: function(object) {
    return object != null && typeof object == "object" &&
      'splice' in object && 'join' in object;
  }
   这个是抄袭prototype的,看看吧,对象不为空且对像类型为object且该对象有splice方法和join方法。也对对你有所启发,毕竟JS有它的特色。

三、一些有用的扩展:
Js代码 复制代码
  1. <input type="button" value="测试获取数组下标" onclick="testIndexOf()" />   
  2. <script>   
  3. // use native browser JS 1.6 implementation if available   
  4. if (!Array.prototype.indexOf) Array.prototype.indexOf = function(item, i) {   
  5.   i || (i = 0);   
  6.   var length = this.length;   
  7.   if (i < 0) i = length + i;   
  8.   for (; i < length; i++)   
  9.     if (this[i] === item) return i;   
  10.   return -1;   
  11. };   
  12.   
  13. function testIndexOf()   
  14. {   
  15. var a =[1,2,3];   
  16. alert(a.indexOf(2));   
  17. }  
<input type="button" value="测试获取数组下标" onclick="testIndexOf()" />
<script>
// use native browser JS 1.6 implementation if available
if (!Array.prototype.indexOf) Array.prototype.indexOf = function(item, i) {
  i || (i = 0);
  var length = this.length;
  if (i < 0) i = length + i;
  for (; i < length; i++)
    if (this[i] === item) return i;
  return -1;
};

function testIndexOf()
{
var a =[1,2,3];
alert(a.indexOf(2));
}
   上面的举例获取数组中某项的下标,还有像:把数组里的项唯一化(uniq)、最后一个位置(lastIndexOf)等等,你都可以扩展。并且你可以借鉴prototype的库,mootools的库等等,里面的有些写法很是经典,可以学习学习。
分享到:
评论
1 楼 supertianyi 2011-11-16  
好文,学习了

相关推荐

Global site tag (gtag.js) - Google Analytics