1.检测数组
var is_array = function(value){ return value && typeof value === 'object' && typeof value.length === 'number' && typeof value.slice === 'function' && !(value.propertyIsEnumerable('length')); }
2.对是否改变原数组的常用方法归纳
改变原数组的:
- shift: 将第一个元素删除并且返回删除元素,空即为undefined
- unshift:向数组开头添加元素,并返回新的长度
- pop:删除最后一个并返回删除的元素
- push:向数组末尾添加元素,并返回新的长度
- reverse:颠倒数组顺序
- sort:对数组排序
- splice:splice(start,length,item)删,增,替换数组元素,返回被删除数组,无删除则不返回
不改变原数组的:
- concat:连接多个数组,返回新的数组
- join:将数组中所有元素以参数作为分隔符放入一个字符
- slice:slice(start,end),返回选定元素
- map,filter,forEach,some,every等不改变原数组
splice方法:
1.删除-用于删除元素,两个参数,第一个参数(要删除第一项的位置),第二个参数(要删除的项数)
2.插入-向数组指定位置插入任意项元素。三个参数,第一个参数(其实位置),第二个参数(0),第三个参数(插入的项)
3.替换-向数组指定位置插入任意项元素,同时删除任意数量的项,三个参数。第一个参数(起始位置),第二个参数(删除的项数),第三个参数(插入任意数量的项)
var lang = ["php","java","javascript"]; //删除 var removed = lang.splice(1,1); alert(lang); //php,javascript alert(removed); //java ,返回删除的项 //插入 var insert = lang.splice(0,0,"asp"); //从第0个位置开始插入 alert(insert); //返回空数组 alert(lang); //asp,php,javascript //替换 var replace = lang.splice(1,1,"c#","ruby"); //删除一项,插入两项 alert(lang); //asp,c#,ruby ,javascript
sort方法
Javascript方法的默认比较函数假定所有要排序的元素都是字符串,因此在比较数字时可以用自己的比较函数来替换默认的比较函数。
var m = ['aa','bb',1,4,2,5]; m.sort(function(a,b){ if(a === b){ return 0; } if(typeof a === typeof b){ return a < b ? -1 : 1; } return typeof a < typeof b ? -1 : 1; });