JavaScript 數組的方法 數組的遍歷

一、數組的方法

數組在js中經常用於保存數據,是操作頻率非常高的數據類型,js也提供了很多方法來對數組進行操作。下面介紹常用的方法。

join()、push()、pop()、shift() 、 unshift()、sort()、reverse()、concat()、slice()、splice()、indexOf()、 lastIndexOf()、forEach() 、map() 、filter() 、every() 、some()

下面詳細介紹一下各個方法的基本功能:

1、join() 原數組不會發生改變
join(separator): 將數組的元素組起一個字符串,以separator爲分隔符,省略的話則用默認用逗號爲分隔符,該方法只接收一個參數:即分隔符。

var arr = [1,2,3];
console.log(arr.join()); // 1,2,3
console.log(arr.join("-")); // 1-2-3
console.log(arr); // [1, 2, 3](原數組不變)

通過join()方法可以實現重複字符串,只需傳入字符串以及重複的次數,就能返回重複後的字符串,函數如下:

function repeatString(str, n) {
return new Array(n + 1).join(str);
}
console.log(repeatString(“abc”, 3)); // abcabcabc
console.log(repeatString(“Hi”, 5)); // HiHiHiHiHi

2、push()和pop() 原數組會發生改變
push(): 可以接收任意數量的參數,把它們逐個添加到數組末尾,並返回修改後數組的長度
pop():數組末尾移除最後一項,減少數組的 length 值,然後返回移除的項

var arr = ["Lily","lucy","Tom"];
var count = arr.push("Jack","Sean");
console.log(count);       // 5
console.log(arr);         // ["Lily", "lucy", "Tom", "Jack", "Sean"]
var item = arr.pop();
console.log(item);       // Sean
console.log(arr);        // ["Lily", "lucy", "Tom", "Jack"]

3、shift() 和 unshift() 原數組會發生改變
shift():刪除原數組第一項,並返回刪除元素的值;如果數組爲空則返回undefined 。
unshift:將參數添加到原數組開頭,並返回數組的長度

這組方法和上面的push()和pop()方法正好對應,一個是操作數組的開頭,一個是操作數組的結尾。

var arr = ["Lily","lucy","Tom"];
var count = arr.unshift("Jack","Sean");
console.log(count);         // 5
console.log(arr);          //["Jack", "Sean", "Lily", "lucy", "Tom"]
var item = arr.shift();
console.log(item);         // Jack
console.log(arr);          // ["Sean", "Lily", "lucy", "Tom"]

4、sort() 原數組會發生改變
sort():對數組內的數據進行排序(默認爲升序),並且返回排過序的新數組。
注意:
4.1:這裏的排序是針對字符的排序,先使用數組的toString()方法轉爲字符串,再逐位比較,3是大於12的,因爲首位3>1,不要與Number型的數據排序混淆

4.2:str2數組中增加了三個字符,可以看到,比較的時候,zoom是最大的,因爲首位的英文字母通過ASCII碼可以轉爲相應的數值,再根據數值比較

var str1 = [12,2,43,5,2,5];
var str2 = [92,2,43,"hello",5,2,5];
console.log(str1.sort());        //[12, 2, 2, 43, 5, 5]
console.log(str1);            //[12, 2, 2, 43, 5, 5]
console.log(str2.sort());        //[2, 2, 43, 5, 5, 92, "abc", "hello", "zoom"]
console.log(str2);            //[2, 2, 43, 5, 5, 92, "abc", "hello", "zoom"]

4.3:排序問題

參數:sort(callback) 如果需要按照數值排序,需要傳參。sort(callback),callback爲回調函數,該函數應該具有兩個參數,比較這兩個參數,然後返回一個用於說明這兩個值的相對順序的數字(a-b)。其返回值如下:

  • 若 a 小於 b,返回一個小於 0 的值。
  • 若 a 等於 b,則返回 0。
  • 若 a 大於 b,則返回一個大於 0 的值。
var str3 = [92,2,43,5,2,5];     
console.log(str3.sort(fn));        //[2, 2, 5, 5, 43, 92]
console.log(str3);             //[2, 2, 5, 5, 43, 92]
function fn (a,b){
    return a-b;
 }

5、reverse() 原數組會發生改變
reverse()將:數組的數據進行反轉,並且返回反轉後的數組

var str1 = [12,2,"hello"];
console.log(str1.reverse());      //["hello", 2, 12]
console.log(str1);            //["hello", 2, 12]

6、concat() 原數組不會發生改變
concat():合併數組,可以合併一個或多個數組,會返回合併數組之後的數據

7、slice() 原數組不會發生改變

8、splice() 原數組會發生改變

9、indexOf()和 lastIndexOf() 原數組不會發生改變

10、forEach()原數組不會發生改變

11、map()原數組不會發生改變

12、filter()原數組不會發生改變

13、every()原數組不會發生改變

14、some()原數組不會發生改變

15、reduce()和 reduceRight()原數組不會發生改變

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章