javascript数组总结

来源:互联网 发布:java static final区别 编辑:程序博客网 时间:2024/04/20 05:18

javascript数组使用

数组的定义:

  • 方法1.
    var mycars=new Array();mycars[0]="Saab";mycars[1]="Volvo";mycars[2]="BMW";
  • 方法2.定义和初始化一起
    var mycars=new Array("Saab","Volvo","BMW") ;或者:var mycars=["Saab","Volvo","BMW"];
javascript二维数组,用一维数组来模拟:
  • 方法1.
    var arr =  new Array(['a','b','c'],['d','e','f']);  arr[0]返回第一个一维数组,arr[0][0]返回第一个一维数组的第一个元素'a',下同。
  • 方法2.
    var arr=new Array();   for(i=0;i<100;i++) {        arr[i]=new Array(...);   }
  • 方法3.
    var arr = new Array( new Array(), new Array(), new Array());
javascript的数组不需要设定长度,会自己进行扩展;数组名.length返回元素个数,数组常用函数:
toString():把数组转换成一个字符串 toLocaleString():把数组转换成一个字符串 join():把数组转换成一个用符号连接的字符串 shift():将数组头部的一个元素移出 unshift():在数组的头部插入一个元素 pop():从数组尾部删除一个元素 push():把一个元素添加到数组的尾部 concat():给数组添加元素 slice():返回数组的部分 reverse():将数组反向排序 sort():对数组进行排序操作 splice():插入、删除或者替换一个数组元素

JavaScript sort() 方法  

对 Array 进行排序。 arrayobj.sort(sortFunction) 
参数
arrayObj 必需。 任意 Array 对象。
sortFunction 可选。 用来确定元素顺序的函数的名称。 如果省略该参数,元素将按 ASCII 字符顺序的升序进行排序。
备注
sort 方法就地对 Array 对象进行排序;在执行过程中不会创建新 
Array 对象。如果在 sortFunction 参数中提供一个函数,则该函数必须返回下列值之一:(sort()排序时每次比较两个数组项都回执行这个参数,并把两个比较的数组项作为参数传递给这个函数。当函数返回值为1的时候就交换两个数组项的顺序,否则就不交换。)

  • 如果所传递的第一个参数小于第二个参数,则返回负值。
  • 如果两个参数相等,则返回零。
  • 如果第一个参数大于第二个参数,则返回正值
下面的示例演示如何使用 sort 方法。
var a = new Array("4", "11", "2", "10", "3", "1");a.sort();document.write(a);document.write("<br/>");// Output: 1,10,11,2,3,4 // Sort the array elements with a function that compares array elements.a.sort(CompareForSort);document.write(a);document.write("<br/>");// Output: 1,2,3,4,10,11. // Sorts array elements numerically.function CompareForSort(param1, param2){    var first = parseInt(param1);    var second = parseInt(param2);     if (first == second)        return 0;    if (first < second)        return -1;    else        return 1; }
比如,从一个数组中找出最大值,传统的方法是:
var numbers = [3,11,243,145,897];var max = 0;for(var i=0;i<numbers.length;i++){      if(numbers[i]>max) max = numbers[i];}alert(max);
使用sort()方法会令这种方式更加简介:这也是一种另类实现方法吧,还不用写循环遍历. 不过,必须要指出的是,这种方法的效率是最低的,对于几十个百来个元素的数组,你还是可以使用这种技巧. 但是,如果数组很大,用 sort()方法可以慢得让你想抽烟 .
numbers.sort(function(a,b){return b-a});
sort()是按照ASCII码顺序进行的,所以可以理解为默认是字串排列。如果是数字排序或其他特殊排序还要设置相关参数(函数):sort(parameters)。下面是一些不同情况下的函数扩展:
<script type="text/javascript">//自定义一个数组排序扩展的原型Array.prototype.sortExt=function(type,str){  switch (type){    case "string":/* 字串顺序*/      this.sort();      return this;      //break;      case "number":/* 数字数组排序*/      this.sort(        function(a,b){          return a-b;        }      );      return this;    case "pinyin":      this.sort(        function(a,b){          return a.localeCompare(b)        }      );      return this;    case "disorder":/* 数组乱序*/      this.sort(        function(){           return Math.random()>0.5?-1:1;        }      );      return this;    case "withsearch":/*带搜索(str为要搜索的字串) 匹配元素排前*/      this.sort(        function(a,b){          return a.indexOf(str)==-1?1:a.localeCompare(b);        }      );       return this;    default:  /*(默认)等同于字串数组排序*/      this.sort();      return this;  }}//-----------var arr=[];for(var i=2;i<14;i++){arr.push(i)} var arrCN=Array("哈哈","波","柴科夫斯基","特","啊","这个")var arrCN=Array("ABOUT","波","柴科夫斯基","111","HELLO","这个") document.write(arr.sortExt('string') + "<br />");//Output:10,11,12,13,2,3,4,5,6,7,8,9document.write(arr.sortExt('number') + "<br />");//Output:2,3,4,5,6,7,8,9,10,11,12,13document.write(arrCN.sortExt('pinyin') + "<br />");//Output:111,ABOUT,HELLO,柴科夫斯基,波,这个document.write(arr.sortExt('disorder') + "<br />");//Output:6,3,9,8,7,2,11,5,12,4,10,13document.write(arrCN.sortExt('withsearch','哈') + "<br />");////Output:这个,波,柴科夫斯基,HELLO,ABOUT,111 </script>
利用sort()搜索:
<script type=”text/javascript”>var testArray=['df', 'rtr', 'wy', 'dafd', 'dfs', 'wefa', 'tyr', 'rty', 'rty', 'ryt', 'afds', 'wer', 'te'];testArray.sort(function(a,b){return a.indexOf(‘a’)==-1?1:-1;});document.write(testArray+ "<br />");//Output:afds,dafd,wefa,tyr,te,df,wer,wy,ryt,rty,rty,rtr,dfs</script>
对对象进行排序:假设现在有一个Person类,有身高、体重、年龄三个属性,我们按照年龄进行排序,年龄相等再比较身高,身高相等再比较体重;
//先定义Person类function Person(name, height, weight, age){        this.name = name; //用于区分对象        this.height = height; //身高        this.weight = weight; //体重        this.age = age; //年龄              }
function _compare(x, y) {var ret = 0;if (x.age > y.age) {//先比较年龄ret = 1;} else if (x.age == y.age) { //年龄相等,比较身高if (x.height > y.height) {ret = 1;} else if (x.height == y.height) { //身高相等,比较体重ret = x.weight > y.weight ? 1 : x.weight < y.weight ? -1 : 0;/* if(x.weight > y.weight) {ret = 1;} else if (x.weight == y.weight) {ret = 0;} else{ret = -1;} */} else {ret = -1;}} else {ret = -1;}return ret;}
var sunshine1 = new Person("sunshine1", 180, 58, 22);var sunshine2 = new Person("sunshine2", 178, 60, 22);var sunshine3 = new Person("sunshine3", 180, 60, 22);//定义数组var persons = [ sunshine1, sunshine2, sunshine3 ];//排序persons.sort(_compare);//将排序后的结果循环输出for ( var i = 0; i < persons.length; i++) {document.write(persons[i].name + "," + persons[i].height + ","+ persons[i].weight + "," + persons[i].age + "<br />");}
sunshine2,178,60,22sunshine1,180,58,22sunshine3,180,60,22
要求:在以下文档模式中受支持:Quirks、Internet Explorer 6 标准模式、Internet Explorer 7 标准模式、Internet Explorer 8 标准模式、Internet Explorer 9 标准模式和 Internet Explorer 10 标准模式。

JavaScript join()方法 和 split()方法

使用 JavaScript 内置的 split() 和 join() 函数处理 HTML 对象的 CSS 类名,如果 HTML 对象的类名是空格隔开的多个名字,你在为它追加或删除一个 CSS 类名的时候需要特别注意,如果该对象还没有类名属性,可以直接将新的类名赋予它,如果已经存在类名,新增的类名前必须有一个空格,用传统的 JavaScript 方法是这样实现的:
function addClass(elm,newclass){var c = elm.className;elm.className = (c === '') ? newclass : c+' '+newclass; }
使用 split 和 join 方法则直观优雅得多:
function addClass(elm,newclass){var classes = elm.className.split(' ');classes.push(newclass);elm.className = classes.join(' ');}
未完待续……



原创粉丝点击