专注于互联网--专注于架构

最新标签
网站地图
文章索引
Rss订阅

首页 »Javascript教程 » asp数组操作:JavaScript数组操作 »正文

asp数组操作:JavaScript数组操作

来源: 发布时间:星期四, 2009年2月12日 浏览:502次 评论:0



join(delimiter):把中各个元素使用分隔符(delimiter)拼成
concat(.gif' />1,.gif' />2,...):合并对原不影响只是返回合并后
pop:删除并返回最后个元素
push(element1,element2,...):在末尾追加元素
sht:删除并返回第个元素
unsht(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个数不必相等
返回包含被删除或替换掉元素

判断是否思路方法
var.gif' />Var=[\"aaa\",\"bbb\",\"ccc\"];
varnonArrayVar={length:4,otherAttribute:\"attr\"};
document.write(.gif' />Var.constructorArray);
document.write(\"<br/>\");
document.write(nonArrayVar.constructorArray);结果是true,false

有关转换
可以使用.slice.call或者Array.prototype.slice.call但是IE6,IE7下对DOM元素集合使用这个操作时会报错其它浏览器(Firefox,Opera,Safari)都正常
举例代码:
(function{
//SupportedbyFirefox,IE6,IE7,Opera,Safari
varargArray=.slice.call(arguments);//argumentsisnotan.gif' />,
//.slice.callwillmakea.gif' />witharguments
document.write(argArray.reverse.join(\"&\"));//result:www&2&1
document.write(\"<br/>\"); [Page]

//SupportedbyFirefox,IE6,IE7,Opera,Safari
var.gif' />Like={0:\"ccc\",1:1,2:\"eee\",3:8,length:4};//anobjectthatlookslikeanobject
vartrueArray=.slice.call(.gif' />Like,2,.gif' />Like.length);//makea.gif' />with.gif' />Like
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);//makea.gif' />withnodeList
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操作指类似这样代码:
ArrayArray=grep(condition,oldArray)这个操作将对oldArray每个元素进行遍历如果当前处理元素符合条件condition则加入到返回
jQuery中grep类似这样:function(elems,callback)elems是DOM元素集合callback是实现selector些表达式如果callback返回true则表明当前处理元素符合selector表达式


map
和grep区别map不进行条件判断只是对中每个元素执行指定操作就是将个循环过程进行改装 [Page]

喜欢动态语言风格可以给加个grep和map思路方法例如:
Array.prototype.grep=function(condition,operation,inverse){
(arguments.length<1);

vartester;
(typeofcondition\"function\")tester=condition;
(condition.constructorRegExp)tester=function(e,i){condition.test(e);};
(typeofcondition\"\")
try{
tester=eval(\"false||function(e,i){\"+condition+\";}\");
}catch(e){
}
tester=function(e,i){false;};
(!tester);

varcommand;
(typeofoperation\"function\")command=operation;
(typeofoperation\"\")
try{
command=eval(\"false||function(e,i){\"+operation+\";e;}\");
}catch(e){
}
(typeofcommand!=\"function\")command=function(e,i){e;};

varresult=,match,t;
for(vari=0;i<this.length;i){
match=tester(this[i],i);
(match)t=command(this[i],i);
(match&&!inverse&&t!=null)t.constructorArray?result.concat(t):result.push(t);
(!match&&inverse)result.push(this[i]); [Page]
}

result;
};
Array.prototype.map=function(callback){
(!callback||typeofcallback!=\"function\")this;
for(vari=0;i<this.length;i)callback(this[i],i);
this;
};使用举例:
varoldArray=[2,7,8,5,1,9,2,6,0];
varArray1=oldArray.grep(\"i%20\");//elementswithevenindex
varArray2=oldArray.grep(\"e%21\");//elementswithoddvalue
document.write(Array1+\"<br/>\");//result:2,8,1,2,0
document.write(Array2+\"<br/>\");//result:7,5,1,9

oldArray=[\"aa\",\"bbbb\",\"abcdefg\",\"ccccc\",\"111121111\",\"999999999\"];
varArray3=oldArray.grep(/(\\w)\\1{4,}/);
document.write(Array3+\"<br/>\");//result:ccccc,999999999典型jQuery风格代码:
varobj=document.createElement(\"ul\");
obj.innerHTML=’<li>AAAAAA</li><listyle=\"display:none;\">BBBBBB</li>

<li>CCCCCC</li><li>DDDDDD</li>’;
document.body.appendChild(obj);

window.Interval(function{
//makeaa.gif' />withDOMElementcollection
varliList=obj.getElementsByTagName(\"li\");
varliArray=;
for(vari=0;i<liList.length;i)liArray.push(liList[i]);
//grepfor.gif' />sexample
liArray
.grep(’e.style[\"display\"]\"none\"’,’e.style[\"display\"]=\"\";’,true)


.map(function(e,i){e.style[\"display\"]=\"none\";});
},1500);

2

相关文章

读者评论

发表评论

  • 昵称:
  • 内容: