js数组进阶
来源:互联网 发布:淘宝代购利润是多少 编辑:程序博客网 时间:2024/06/05 09:17
定义数组
方法1:
var a = new Array("1","2");a[2] = 1;a[3] = 2;
方法2:
var a = [1,2,3];a[3] = 4;var b = ["1", "2", "3", "4"];***length属性非只读,当b.length=2时,遍历b时,只显示1,2,后面属性变得不可用;
字符串也可以作为数组的下标:
var stack = new Array(); stack['first'] = 3.1415926; stack['second'] = "okay then.";for(var item in stack){ alert(typeof stack[item]); //number //string typeof 返回值有六种可能: "number," "string," "boolean," "object," "function," 和 "undefined."}********
遍历数组:
1.//索引数组且并非"连续分配"内存的,因此索引方法并不会带来很高的效率
for (var i = 0,a; a=arr[i++];){alert(a);}
2.//可遍历对象的属性
for(var i in arr){alert(a);}********
内置方法:
push():向数组的末尾添加一个或更多元素,并返回新的长度
pop():删除并返回数组的最后一个元素
splice():删除元素,并向数组添加新元素
sort(function(a,b){return a-b//正序})**数字排序时使用,字符排序时,直接arr.sort()
reverse():颠倒数组中元素的顺序
concat(array1 [,..arrayn]):用于将N个数组合并到array1数组中
slice(start, [end]):返回一个 Array 对象
delete只能删除元素对象,undefined将代替元素对象占据下标,因此,length不会减少
******************增加remove方法
//根据index删除
Array.prototype.remove = function(index){if(isNaN(index)||index>this.length){return false;}for(var i=0,n=0;i<this.length;i++){if(this[i]!=this[index]){this[n++]=this[i];}}this.length-=1;};******************增加pushIndex方法
//根据index,插入
Array.prototype.pushIndex = function(index,d){var size = this.length;if(isNaN(index)||index>this.length){return false;}for(var j=size;j>=index;j--){this[j] = this[j-1]; } this[index] = d; size++;};---不影响整个原型链
Array.remove = function(array, from, to) { var rest = array.slice((to || from) + 1 || array.length); array.length = from < 0 ? array.length + from : from; return array.push.apply(array, rest); };代价是你需要显式的传递需要操作的数组作为第一个参数
var array = ["one", "two", "three", "four", "five", "six"];
Array.remove(array, 0, 2);//删除0, 1, 2三个元素
****这种方式,相当于给JavaScript内置的Array添加了一个静态方法,静态变量同上,不需要"实例化"Array类
**********************************************************************
伪数组:符合以下条件的对象
1,具有length属性
2,按索引方式存储数据
3,不具有数组的push,pop等方法
如:
1,function内的arguments.
2,通过document.forms,Form.elements,Select.options,document.getElementsByName(),document.getElementsByTagName(),childNodes/children 等方式获取的集合(HTMLCollection,NodeList)等.
工具函数makeArray
function makeArray(obj){ var rs=[],len=obj.length; try{ //slice(start,end)复制一段数组 rs = [].slice.call(obj,0); }catch(e){//for IE for(var i=0;j=obj[i++];){ rs.push(j); } } return rs; }
判断数组类型
//typeof是一个一元的操作符1.alert(typeof []);//object //对数组无效2.var arr=[]; alert(arr instanceof Array);//true3.alert(arr.constructor == Array); // true
0 0
- js数组进阶
- JS进阶笔记-02(数组)
- 数组进阶
- JS的进阶上山打怪咯之数组(三)
- js进阶
- js进阶
- js进阶
- 数组进阶-数组倒置
- 数组进阶对象数组
- 数组操作(进阶)
- JavaScript进阶之数组
- node.js进阶学习
- node.js进阶学习
- js进阶提升
- JS进阶书籍
- js进阶---构造函数
- js 进阶知识
- JS进阶书籍
- PHP计算中文字符串长度 、截取对应中文字符串
- [ACM] HDU 2255 奔小康赚大钱 (二分图最大权匹配,KM算法)
- linux内核开发板启动流程
- 【重头学习Android】 关于Activity生命周期
- 径向基网络(RBF network)之BP监督训练
- js数组进阶
- android elicipse常用快捷键
- .net中axWinsock 监听多个客户端
- myeclipse设置utf-8格式
- magento web services API之sales_order.list
- iOS常用的高效开发宏
- 如何修改用户SSH\telnet登陆linux时候显示的欢迎信息
- 单播、广播和多播IP地址
- 朴素贝叶斯(NaiveBayes)算法总结