在js中對數組的操作是經常遇到的,我呢在這就列一下經常用到的方法
刪除數組中的元素:
1.delete方法:delete刪除的只是數組元素的值,所占的空間是並沒有刪除的
代碼:
var arr=[12,23,44,5,6,23,43,34];
console.log(arr.length);
console.log(arr);
delete arr[1];
console.log(arr);
console.log(arr[1]);
console.log(arr.length);
運行結果在這里:
這個就很直觀的看得出來,刪除后,數組的長度前后是並沒有變化的。被刪除的元素位置還是留在那,讀取到該下標元素的時候,元素的值為undefined。
2.splice方法:該方法刪除數組指定的元素,並且可以給數組添加新的元素,即實現刪除/替換數組的某項元素。splice(下標,刪除的長度,替換的新元素)
arr.splice(index,length,items,items,...);
注意:如果不添加item的時候,就是數組的刪除,會改變原數組的長度
代碼如下:
var arr=[12,23,44,5,6,23,43,34]; console.log(arr.length); arr.splice(1,2);//從下標為1的元素開始刪除,刪除的長度為2即23,44兩個數 console.log(arr); console.log(arr.length);
運行后的結果:
從運行結果中可以看得出來,原數組中的23,44兩個元素被刪除了,數組長度由原來的8變成了6
shift方法:刪除第一個數組元素,不帶參數,數組的長度會減1,並且返回的是數組的第一個元素;
arr.shift();
注意:如果數組是空的,那么 shift() 方法將不進行任何操作,返回 undefined 值。請注意,該方法不創建新數組,而是直接修改原有的 arrayObject
pop方法:刪除數組的最后一個元素,數組的長度會減1,並且返回的是數組的最后一個元素(通過alert()可以查看出返回的是哪個值)
arr.pop();
var arr=['a','b','c','d','e','f']; alert(arr.shift()); arr.pop(); alert(arr.pop()); console.log(arr);
增加數組:
/*****檢測方法都是和上面的類似的,下面這些我就羅列測試結果截圖了*****/
unshift(): 方法:在數組的第一個元素前面增加一個元素,數組的長度會加1,該方法會改變原來數組的長度.
arr.unshift(newElement)
push():在數組的結尾追加元素,可以追加多個元素,該方法會改變原來數組的長度
arr.push(newElement,...);
注意:追加的元素最好是簡單類型的字面量,不要是數組,如果是數組的,追加過來的元素會在該位置顯示為一個數組,元素就會變成了二維數組,甚至多維數組
concat():合並兩個或多個數組,該方法不會改變現有的數組,而僅僅會返回被連接數組的一個副本
數組排序:
sort():該方法是對數組進行升序排序,規則是按ascii表的規則來的
arr.sort();
reverse():對數組進行翻轉操作
arr.reverse();
js模擬原理實現的代碼:
var arr = ["諸葛亮","安琪拉","狄仁傑","后羿","荊軻","娜可露露","魯班"]; //思路:實現方法:1.操作原數組,讓原數組第一位和最后一個位調換位置,以此類推。 for(var i=0;i<arr.length/2;i++){ //讓前后數組中的元素交換位置。 var temp = arr[i]; //前面項和對應的后面項交換位置。(arr.length-1-i = 倒數第i+1項) arr[i] = arr[arr.length-1-i]; arr[arr.length-1-i] = temp; } console.log(arr);
檢測是否為數組:
arr.isArray(obj):該方法適用於確定傳遞的值是否為Array,是Array返回的則是true,否的話返回的是false
Array.isArray([1, 2, 3]); // true Array.isArray({foo: 123}); // false Array.isArray("foobar"); // false Array.isArray(undefined); // false
intanceof 同樣也是檢測使用的
語法:a instanceof Object
返回的值是true or false;
其他方法:
slice():從當前數組中截取一個新的數組,不影響原來的數組,參數start從0開始,end從1開始(從第一個元素開始)
arr.slice(star,end);
注意:如果slice里面沒有定義結束的位置的話,那么截取的元素就從被截取元素的開始位置一直截取到結束位置
arr.join():把數組轉換成為字符串,可以自己定義分隔符 arr.join("自定義分隔符如&"),默認是逗號隔開,如果要沒有分隔符的話,就arr.join("");
arr.toString():同樣是把數組轉成字符串,但是返回的字符串每項都是用逗號隔開的