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