原文鏈接:http://caibaojian.com/js-array-object-method.html
Array 數組方法·
方法 | 描述 |
---|---|
concat() | 連接兩個或更多的數組,並返回結果。 |
join() | 把數組的所有元素放入一個字符串。元素通過指定的分隔符進行分隔。 |
pop() | 刪除並返回數組的最後一個元素 |
push() | 向數組的末尾添加一個或更多元素,並返回新的長度。 |
reverse() | 顛倒數組中元素的順序。 |
shift() | 刪除並返回數組的第一個元素 |
slice() | 從某個已有的數組返回選定的元素 |
sort() | 對數組的元素進行排序 |
splice() | 刪除元素,並向數組添加新元素。 |
toSource() | 返回該對象的源代碼。 |
toString() | 把數組轉換爲字符串,並返回結果。 |
toLocaleString() | 把數組轉換爲本地數組,並返回結果。 |
unshift() | 向數組的開頭添加一個或更多元素,並返回新的長度。 |
valueOf() | 返回數組對象的原始值 |
具體使用請參考w3c上的詳情。本文給出一些使用例子和返回值
//code from http://caibaojian.com/js-array-object-method.html //concat() 方法用於連接兩個或多個數組。 //該方法不會改變現有的數組,而僅僅會返回被連接數組的一個副本。 //arrayObject.concat(arrayX,arrayX,......,arrayX) //arrayX 必需。該參數可以是具體的值,也可以是數組對象。可以是任意多個。 var a = [1,2,3]; var b = a.concat(4,5); var c = ['jack','jonhn','tom']; var d = ['jim','caibaojian.com']; var e = c.concat(d); document.write(a+"<br/>"); // 1,2,3 document.write(b+"<br/>"); //1,2,3,4,5 document.write(e+"<br/>"); //join() 方法用於把數組中的所有元素放入一個字符串。元素是通過指定的分隔符進行分隔的。 //arrayObject.join(separator) //separator 可選。指定要使用的分隔符。如果省略該參數,則使用逗號作爲分隔符。 var a1 = [1,2,3]; document.write("join方法<br/>"+a1.join()+"<br/>"); var b1 = [1,2,3]; document.write(b1.join(".")+"<br/>"); //使用分隔符來分隔數組中的元素,輸出1.2.3 document.write("join()的返回值類型爲:"+typeof(a1.join())+"<br/>"); //pop() 方法用於刪除並返回數組的最後一個元素。 //arrayObject.pop() //創建一個數組,然後刪除數組的最後一個元素。請注意,這也會改變數組的程度: var a2 = [1,2,3]; var b2 = a2.pop(); document.write(b2+"<br/>"); //返回數組最後一個元素 3 document.write(a2+"<br/>"); //原有數組已經發生改變,去掉最後一個元素,返回 1,2 //push() 方法可向數組的末尾添加一個或多個元素,並返回新的長度。 //arrayObject.push(newelement1,newelement2,....,newelementX) //newelement1 必需。要添加到數組的第一個元素。 //newelementX 可選。可添加多個元素。 var a3 = [1,2,3]; var b3 = a3.push("caibaojian.com"); document.write(b3+"<br/>"); //輸出新的數組長度 4 document.write(a3+"<br/>"); //原來的數組已經改變,1,2,3,caibaojian.com //reverse() 方法用於顛倒數組中元素的順序。 //arrayObject.reverse() 該方法會改變原來的數組,而不會創建新的數組。 var a4 = [1,2,3]; var b4 = a4.reverse(); document.write(b4+"<br/>"); //數組倒序 3,2,1 document.write(a4+"<br/>"); //數組已經發生改變,並且a4 === b4; document.write(a4 === b4); //true //shift() 方法用於把數組的第一個元素從其中刪除,並返回第一個元素的值。 //arrayObject.shift() //數組原來的第一個元素的值。 //如果數組是空的,那麼 shift() 方法將不進行任何操作,返回 undefined 值。請注意,該方法不創建新數組,而是直接修改原有的 arrayObject。 var a5 = [1,2,3]; var b5 = a5.shift(); document.write("<br/>"); document.write(b5+"<br/>"); //返回第一個 1 document.write(a5+"<br/>"); //數組a5已經發生變化,返回去掉第一個 2,3 //unshift() 方法可向數組的開頭添加一個或更多元素,並返回新的長度。跟pushu添加的順序剛好相反 //arrayObject.unshift(newelement1,newelement2,....,newelementX) //newelement1 必需。向數組添加的第一個元素。newelementX 可選。可添加若干個元素。 //IE 7及以下無法正確運行 var a6 = ['a','b','c']; var b6 = a6.unshift('d'); document.write(b6+"<br/>"); //返回新的長度 4 document.write(a6+"<br/>"); //原來的數組已經改變,輸出 d,a,b,c //slice() 方法可從已有的數組中返回選定的元素。 //arrayObject.slice(start,end) //start 必需。規定從何處開始選取。如果是負數,那麼它規定從數組尾部開始算起的位置。也就是說,-1 指最後一個元素,-2 指倒數第二個元素,以此類推。 //end 可選。規定從何處結束選取。該參數是數組片斷結束處的數組下標。如果沒有指定該參數,那麼切分的數組包含從 start 到數組結束的所有元素。如果這個參數是負數,那麼它規定的是從數組尾部開始算起的元素。 //返回一個新的數組,包含從 start 到 end (不包括該元素)的 arrayObject 中的元素。不會改變原來數組,而是返回一個子數組 var a7 = ['a','b','c']; var b7 = a7.slice(1,3); document.write(b7+"<br/>"); //返回新的數組 b,c document.write(a7+"<br/>"); //原來的數組不變 a,b,c //splice() 方法向/從數組中添加/刪除項目,然後返回被刪除的項目。該方法會改變原始數組。 //arrayObject.splice(index,howmany,item1,.....,itemX) //index 必需。整數,規定添加/刪除項目的位置,使用負數可從數組結尾處規定位置。 //howmany 必需。要刪除的項目數量。如果設置爲 0,則不會刪除項目。 //item1, ..., itemX 可選。向數組添加的新項目。 var a8 = ['a','b','c','d']; var b8 = a8.splice(2,0,"caibaojian") document.write(a8+"<br/>"); //輸出 a,b,caibaoijan,c,d //alert(b8); var c8 = a8.splice(1,3); //document.write(c8+"<br/>"); document.write(a8); //sort() 方法用於對數組的元素進行排序。 //arrayObject.sort(sortby) //sortby 可選。規定排序順序。必須是函數。 //返回值 對數組的引用。請注意,數組在原數組上進行排序,不生成副本。 var a9 = ['a','f','h','c']; var b9 = a9.sort(); var c9 = [1,100,40,30,104,1000,4]; var d9 = c9.sort(); document.write("<br/>"+b9+"<br/>"); //a,c,f,h 按照字母輸出 document.write(a9+"<br/>"); //原來的數組已經變化,a,c,f,h 按照字母順序輸出 document.write(d9+"<br/>"); //1,100,1000,104,30,4,40 數字沒有按照大小輸出,需要自定義一個順序 function sortNumber(a,b) { return a - b } document.write(c9.sort(sortNumber)+"<br/>"); //1,4,30,40,100,104,1000 //toSource() 方法表示對象的源代碼。 //該原始值由 Array 對象派生的所有對象繼承。 //toSource() 方法通常由 JavaScript 在後臺自動調用,並不顯式地出現在代碼中。 //只有 Gecko 核心的瀏覽器(比如 Firefox)支持該方法,也就是說 IE、Safari、Chrome、Opera 等瀏覽器均不支持該方法。 //object.toSource() //toString() 方法可把數組轉換爲字符串,並返回結果。 //arrayObject.toString() //返回值:arrayObject 的字符串表示。返回值與沒有參數的 join() 方法返回的字符串相同。 var a11 = ['a','b','c','d']; var b11 = a11.toString(); document.write(b11+"<br/>"); document.write("toString的返回值類型爲:"+typeof(b11)); //arrayObject.toLocaleString() //valueOf() 方法返回 Array 對象的原始值。 //arrayObject.valueOf()
刪除數組指定的某個元素
首先可以給JS的數組對象定義一個函數,用於查找指定的元素在數組中的位置,即索引,代碼爲:
Array.prototype.indexOf = function(val) { for (var i = 0; i < this.length; i++) { if (this[i] == val) return i; } return -1; };
然後使用通過得到這個元素的索引,使用js數組自己固有的函數去刪除這個元素:
代碼爲:
Array.prototype.remove = function(val) { var index = this.indexOf(val); if (index > -1) { this.splice(index, 1); } };
這樣就構造了這樣一個函數,比如我有有一個數組:
var emp = ['abs','dsf','sdf','fd']
假如我們要刪除其中的fd,就可以使用:
emp.remove('fd');
刪除的數組的某一項
splice(index,len,[item]) 註釋:該方法會改變原始數組。
splice有3個參數,它也可以用來替換/刪除/添加數組內某一個或者幾個值
index:數組開始下標 len: 替換/刪除的長度 item:替換的值,刪除操作的話 item爲空
如:arr = ['a','b','c','d']
刪除
arr.splice(1,1) //['a','c','d'] 刪除起始下標爲1,長度爲1的一個值,len設置的1,如果爲0,則數組不變 arr.splice(1,2) //['a','d'] 刪除起始下標爲1,長度爲2的一個值,len設置的2
替換
arr.splice(1,1,'ttt') //['a','ttt','c','d'] 替換起始下標爲1,長度爲1的一個值爲‘ttt’,len設置的1 arr.splice(1,2,'ttt') //['a','ttt','d'] 替換起始下標爲1,長度爲2的兩個值爲‘ttt’,len設置的1
添加 ---- len設置爲0,item爲添加的值
arr.splice(1,0,'ttt') //['a','ttt','b','c','d'] 表示在下標爲1處添加一項'ttt'
2:delete
delete刪除掉數組中的元素後,會把該下標出的值置爲undefined,數組的長度不會變
如:delete arr[1] //['a', ,'c','d'] 中間出現兩個逗號,數組長度不變,有一項爲undefined