素人がプログラミングを勉強していたブログ

プログラミング、セキュリティ、英語、Webなどのブログ since 2008

連絡先: すかいぷ:javascripter_  か javascripter あっと tsukkun.net skypeのほうがいいです

XPathResultでもforEachとか使いたい

document.evaluateやった後が面倒くさすぎる。
Array.prototype.forEach.callとかが使えないから仕方なく作る。

勢いでほかの反復メソッドも作る。

XPathResult.prototype.every:

XPathResult.prototype.every=function(callback,thisObj){

for(var i=0;i<this.snapshotLength;i++){
if(!callback.call(thisObj,this.snapshotItem(i)))return false;
}
return true;
}

XPathResult.prototype.filter:

XPathResult.prototype.filter=function(callback,thisObj){

var result=new Array;
for(var i=0;i<this.snapshotLength;i++){
if(callback.call(thisObj,this.snapshotItem(i))) result.push(this.snapshotItem(i));

}
return result;
}

XPathResult.prototype.forEach:

XPathResult.prototype.forEach=function(callback,thisObj){

for(var i=0;i<this.snapshotLength;i++){
callback.call(thisObj,this.snapshotItem(i));
}
}

XPathResult.prototype.map:

XPathResult.prototype.map=function(callback,thisObj){

var result=new Array;
for(var i=0;i<this.snapshotLength;i++){
result.push(callback.call(thisObj,this.snapshotItem(i)));
}
return result;
}

XPathResult.prototype.some:

XPathResult.prototype.some=function(callback,thisObj){

for(var i=0;i<this.snapshotLength;i++){
if(callback.call(thisObj,this.snapshotItem(i)))return true;
}
return false;
}


indexOfとかlastIndexOfとかは本物すら使ったことないから作らなかった。

参考:ページが見つかりません | Mozilla Developer Network