Js中數組的常見操作

原文鏈接: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


發佈了29 篇原創文章 · 獲贊 13 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章