一、數組的方法
數組在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()原數組不會發生改變