Arrayの書き方&拡張
Array
基礎
var arr=['aaa','bbb','ccc'] //連結文字列化 alert(arr.join()) //aaa,bbb,ccc alert(arr.join('')) //aaabbbccc //抽出 alert(arr.slice(1,3).join()) //bbb,ccc //ソート alert(arr.reverse().join()) //aaa,bbb,ccc alert(arr.reverse().sort().join()) //ccc,bbb,aaa //先頭の配列削除 arr.shift() alert(arr.join()) //bbb,ccc //先頭にの追加 arr.unshift('xxx') alert(arr.join()) //xxx,aaa,bbb,ccc //指定位置削除 arr.splice(1,1) alert(arr.join()) //aaa,ccc //指定位置抜き取り alert(arr.slice(1,3).join()) //bbb,ccc //指定位置の削除 arr.splice(1,1) alert(arr.join()) //aaa,ccc //指定位置の削除、置き換え arr.splice(1,1,['x','y']) alert(arr.join()) //aaa,x,y,ccc //配列結合 alert(arr.concat(['ddd','eee']).join()) //aaa,bbb,ccc,ddd,eee //最後尾に値追加 arr.push('ddd') alert(arr.join()) //aaa,bbb,ccc,ddd arr.push(['xxx','yyy']) alert(arr.join()) //aaa,bbb,ccc,ddd,xxx,yyy //最後尾の値取得 alert(arr.pop().join()) //ccc
arguments に適用
(function(){ var shift = Array.prototype.shift; var join = Array.prototype.join; shift.apply(arguments); alert(join.apply(arguments)); //bbb,ccc })('aaa','bbb','ccc')
arguments を配列に置換
(function(){ arr=[] //push arr.push.apply(arr,arguments); alert(arr.join()) //aaa,bbb,cc //concat arr=arr.concat.apply(arr,arguments); alert(arr.join()) //aaa,bbb,cc })('aaa','bbb','ccc')
Arrayを汚さず機能拡張
var $js={} $js.Array=function(p){ (this._arr=[]).push.apply(this._arr,arguments); for(var i in this)this._arr[i]=this[i]; return this._arr } $js.Array.prototype.each=function(f){ for(var i=0;i<this._arr.length;i++){ f.apply(this._arr,[i]); } } $js.Array.prototype.index=function(val){ var arr=this._arr,len=arr.length; while(len)if(arr[--len]==val)return len; return -1; } $js.Array.prototype.remove=function(val){ var arr=this._arr,idx=arr.index(val); arr.splice(idx,idx); return this; } var arr=new $js.Array('a','b','c') //拡張メソッドの実行 arr.each(function(idx){ alert(this[idx]) // a → b → c }) arr.remove('b') alert(arr.join()) //a,c