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"];
- 方法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());
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的时候就交换两个数组项的顺序,否则就不交换。)
参数
arrayObj 必需。 任意 Array 对象。
sortFunction 可选。 用来确定元素顺序的函数的名称。 如果省略该参数,元素将按 ASCII 字符顺序的升序进行排序。
备注
sort 方法就地对 Array 对象进行排序;在执行过程中不会创建新 Array 对象。如果在 sortFunction 参数中提供一个函数,则该函数必须返回下列值之一:(sort()排序时每次比较两个数组项都回执行这个参数,并把两个比较的数组项作为参数传递给这个函数。当函数返回值为1的时候就交换两个数组项的顺序,否则就不交换。)
- 如果所传递的第一个参数小于第二个参数,则返回负值。
- 如果两个参数相等,则返回零。
- 如果第一个参数大于第二个参数,则返回正值
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(' ');}未完待续……
- JavaScript数组函数总结
- JavaScript数组函数总结
- javascript数组总结
- JavaScript数组函数总结
- javaScript数组总结
- Javascript数组学习总结
- Javascript 数组总结
- 数组操作总结(javascript)
- JavaScript数组方法总结
- JavaScript数组方法总结
- javaScript数组操作总结
- javascript中的数组总结
- JavaScript数组方法总结
- JavaScript 数组方法总结
- JavaScript数组方法总结
- javascript基础总结(四)--数组
- javascript数组、对象操作总结
- javascript常用数组算法总结
- .NET异步编程总结----四种实现模式
- VS2010如何调试IIS上的网站?
- js 自记忆函数
- atoi函数的实现
- Linux下PostgresQL数据库C语言接口:libpq (一)数据库连接
- javascript数组总结
- eclipse的graphical layout窗口工作不正常
- 自己编的关于完数的程序
- struts对cookie的存取
- hdu 1421 搬寝室
- 基于UDP的socket编程
- 如何在C#中模拟C++的联合(Union)?[C#, C++] How To Simulate C++ Union In C#?
- 4
- 黑马程序员_C#面向过程学习总结1