JavaScript数组操作
函数
join(delimiter):把数组中各个元素使用分隔符(delimiter)拼成字符串
concat(array1,array2,...):合并数组,对原数组不影响,只是返回合并后的新数组
pop():删除并返回最后一个元素
push(element1,element2,...):在数组末尾追加元素
shift():删除并返回第一个元素
unshift(element1,element2,...):在数组开始位置添加元素
reverse():将数组元素顺序首尾反转
sort(function):给数组排序
如果不给参数,默认按字符排序(所有元素是数字也不会按数字排序的)
参数必须是一个函数,类似function(a,b){},在函数中判断a,b的大小,a>b返回正数,a<b返回负数,a=b返回0
slice(start,end):返回一个新的数组,将start开始,到end结束(不包括end)之间的元素复制到新数组中
splice(start,count,replaceElement1,replaceElement2,...):删除或者替换数组元素,从start开始,对count个元素进行删除或替换
如果提供replaceElement参数则进行替换,否则进行删除操作,被替换的元素个数和replaceElements的个数不必相等
返回一个数组,包含被删除或替换掉的元素
判断是否数组的方法
vararrayVar=[\"aaa\",\"bbb\",\"ccc\"];
varnonArrayVar={length:4,otherAttribute:\"attr\"};
document.write(arrayVar.constructor==Array);
document.write(\"<br/>\");
document.write(nonArrayVar.constructor==Array);结果是true,false
关于数组转换
可以使用[].slice.call()或者Array.prototype.slice.call(),但是IE6,IE7下对DOM元素集合使用这个操作时会报错,其它浏览器(Firefox,Opera,Safari)都正常
示例代码:
(function(){
//SupportedbyFirefox,IE6,IE7,Opera,Safari
varargArray=[].slice.call(arguments);//argumentsisnotanarray,
//[].slice.call()willmakeanewarraywitharguments
document.write(argArray.reverse().join(\"&\"));//result:www&2&1
document.write(\"<br/>\"); [Page]
//SupportedbyFirefox,IE6,IE7,Opera,Safari
vararrayLike={0:\"ccc\",1:1,2:\"eee\",3:8,length:4};//anobjectthatlookslikeanobject
vartrueArray=[].slice.call(arrayLike,2,arrayLike.length);//makeanewarraywitharrayLike
trueArray.push(\"2008-02-12\");
document.write(trueArray.join(\"|\"));//result:eee|8|2008-02-12
document.write(\"<br/>\");
//SupportedbyFirefox,Opera,Safari
varobj=document.createElement(\"ul\");
obj.innerHTML=’<li>AAAAAA</li><listyle=\"display:none;\">BBBBBB</li>
<li>CCCCCC</li><li>DDDDDD</li>’;
varnodeList=obj.getElementsByTagName(\"li\");//DOMElementcollections
document.write(nodeList.length+\"linodefound!<br/>\");
varnodeArray=[].slice.call(nodeList);//makeanewarraywithnodeList
for(vari=0;i<nodeArray.length;i++){
document.write(nodeArray[i].textContent||nodeArray[i].innerText);
document.write(\"$\");
}//result:AAAAAA$BBBBBB$CCCCCC$DDDDDD$
})(1,2,\"www\");
grep、map
Perl语言带出来的东西,jQuery里面就用了自己的grep和map实现
grep
对数组的grep操作,指类似这样的代码:
ArraynewArray=grep(condition,oldArray),这个操作将对oldArray数组的每个元素进行遍历,如果当前处理元素符合条件condition,则加入到返回数组中
jQuery中的grep类似这样:function(elems,callback),elems是DOM元素集合,callback是实现selector的一些表达式函数,如果callback返回true则表明当前处理的元素符合selector表达式

浙公网安备 33010602011771号