JavaScript 提供數組、函數、數字、對象、字符串標準類型的標準方法集。
1、數組(Array)
array.concat(item...)
concat 方法產生一個新數組,包含 array 的淺複製和附加在後面的一個或多個item參數,並不改變原數組的值。如果一個 item 參數是數組,它的每個元素會被分別添加。
<pre name="code" class="javascript">var a = ['a', 'b', 'c'];
var b = ['x', 'y', 'z'];var c = a.concat(b, true);// c =['a', 'b', 'c', 'x', 'y', 'z', true];
array.join(separator)
join 方法把 array 構造成一個字符串。先把 array 中的每個元素變爲一個字符串,再用 separator 分隔符把他們連接起來。默認的分隔符是逗號 ',' 。
var a = ['a', 'b', 'c'];
var c = a.join(' '); // c 是 'abc'
array.pop()
pop方法移除array中的最後一個元素並返回該元素。如果array是empty,會返回 undefined 。
var a = ['a', 'b', 'c'];
var c = a.pop(); // a 是 ['a', 'b'] c 是 'c' // 改變了數組,返回了移除的值
array.push(item...)
push方法把一個或多個item參數添加到array數組的尾部,改變了這個數組的內容,並返回數組的新長度值。每個參數item都作爲單個元素添加到數組中。
var a = ['a', 'b', 'c'];
var b = ['x', 'y', 'z'];
var c = a.push(b, true);
// a = ['a', 'b', 'c', ['x', 'y', 'z'], true];
// c = 5;
array.reverse()
reverse 方法反轉 array 中的元素,並返回 array 本身。
var a = ['a', 'b', 'c'];
var b = a.reverse();
// a 和 b 都是 ['c', 'b', 'a']
array.shift()
shift 方法移除數組 array 中的第一個元素並返回該元素。 如果數組是空的,會返回 undefined。
var a = ['a', 'b', 'c'];
var c = a.shift(); // a 是 ['b', 'c'] & c 是 'a'
array.slice(start, end)
slice 方法對 array 中的一段做淺複製,從 array[start] 開始複製,一直到 array[end]。start 默認值是 0 ,end 默認值是數組長度。如果 start 或 end 爲負數,則 array.length 會和參數相加,如若還爲負數則取值 0 。如果 start 大於 array.length 或 start 等於 end ,則返回空數組。
var a = ['a', 'b', 'c'];
var b = a.slice(0, 1); // b 是 ['a']<pre name="code" class="javascript">var c = a.slice(1); // c 是 ['b', 'c']
var d = a.slice(1, 2); // d 是 ['b']
array.sort(comparefn)
sort 方法對 array 中的內容進行排序,JavaScript 的默認比較函數把要排序的對象都視爲字符串。不能對一組數字正確排序。
var n = [4, 8, 15, 16, 23, 42];
n.sort() // n 是 [15, 16, 23, 4, 42, 8]
可以用自己的比較函數替換默認比較函數。默認比較函數接受 2 個參數,兩個參數相等時返回 0 ,如果第一個參數應排在前面時,返回一個負數 ,如果第二個參數應排在前面,返回一個正數。
對數字正確排序:
n.sort( function (a, b) {
return a - b;
});
<pre name="code" class="javascript">// n 是[4, 8, 15, 16, 23, 42]
對包含任意簡單值的數組排序:
var m = ['aa', 'bb', 'a', 4, 8, 15, 16, 23, 42];
m.sort ( function (a, b){
if (a ===b) {
return 0;
}
if ( type of a === type of b) {
return a < b ? -1 : 1;
}
return typeof a < typeof b ? -1 : 1;
})
// m 是 [ 4, 8, 15, 16, 23, 42, 'a', 'aa', 'bb'];
使對象數組按照對象中的某個屬性排序,構造比較函數的函數:
var m = ['aa', 'bb', 'a', 4, 8, 15, 16, 23, 42];<pre name="code" class="javascript">var by = function (name) {
return function (o, p) {
var a, b;if (typeof o === 'object' && typeof p === 'object' && o && p){
a = o[name];
b = p[name];
if (a === b) { return 0; } if ( typeof a === typeof b) { return a < b ? -1 : 1; } } else { throw {
name : 'Error',
message : 'Expected an object when sorting by ' + name
};
}
};
};// 使用方法 s.sort(by('first')).sort(by('last'));
sort方法是不穩定的,即兩個值相等還是有可能改變數組的順序,因此如果對多個鍵值排序採用以下的方法:
var m = ['aa', 'bb', 'a', 4, 8, 15, 16, 23, 42];
var by = function (name, minor) {
return function (o, p) {
var a, b;
if (typeof o === 'object' && typeof p === 'object' && o && p){
a = o[name];
b = p[name];
if (a === b) {
return typeof minor === 'function' ? minor(o, p) : 0;
}
if ( typeof a === typeof b) {
return a < b ? -1 : 1;
}
} else {
throw {
name : 'Error',
message : 'Expected an object when sorting by ' + name
};
}
};
};
// 使用方法 s.sort(by('first',by('last')));
array.splice(start, deleteCount, item...)
splice 方法從 array 的 start 位置開始移除 deleteCount (1個或多個) 個元素,並用新的 item 替換它們。返回一個包含移除元素的數組。
var a = ['a', 'b', 'c'];
var r = a.splice(1, 1, 'ache', 'bug');
<pre name="code" class="javascript">// a 是 ['a', 'ache', 'bug', 'c'];
// r 是 ['b'];array.unshift(item...)
unshift 方法類似於 push 方法,將元素添加到數組中,返回數組的新長度,不同的是將元素插在數組的最前面。
var a = ['a', 'b', 'c'];
var r = a.unshift('ache', 'bug');
<pre name="code" class="javascript">// a 是 ['ache', 'bug', 'a', 'b', 'c'];
// r 是 5;
數組的方法總結,
三個添加元素方法,push(加到數組最後面)、unshift(加到數組最前面)、concat(數組和參數組合成新數組返回)
三個刪除元素方法,pop(刪除最後一個)、shift(刪除第一個)、splice(刪除指定的幾個連續元素,並用新的替換)
複製方法,slice(複製其中的連續幾個元素)
反轉方法,reverse
排序方法,sort(可以更改默認的排序函數)
拼接爲字符串方法,join(使用separator參數將元素連接起來)
2、函數function.apply(thisArg, argArray)
apply 方法調用 function,傳遞一個會被綁定在 this 上的參數和一個可選數組作爲參數。
3、數字
number.toExponential( fractionDigits )
toExponential 方法把 number 轉換成一個指數形式的字符串。fractionDigits 參數是可選的,控制小數點後的數字位數,範圍在 0 ~ 20。無參數不改變小數位。
document.writeln(Math.PI.toExponential(0));
document.writeln(Math.PI.toExponential(2));
document.writeln(Math.PI.toExponential());
// 結果
3e+0
3.14e+0
3.141592653589793e+0
number.toFixed( fractionDigits )
toFixed 方法把 number 轉換成一個十進制形式的字符串。fractionDigits
參數是可選的,控制小數點後的數字位數,範圍在 0 ~ 20,默認是 0。
document.writeln(Math.PI.<span style="font-size:18px;">toFixed</span>(0));
document.writeln(Math.PI.<span style="font-size:18px;">toFixed</span>(2));
document.writeln(Math.PI.<span style="font-size:18px;">toFixed</span>());
// 結果
3
3.14
3
number.toPrecision( precision)
toPrecision 方法把 number 轉換成一個十進制形式的字符串。precision 參數是可選的,控制數字精度,範圍在 1 ~ 21。無參數不改變數字精度。
<pre name="code" class="javascript">document.writeln(Math.PI.<span style="font-size:18px;">toPrecision</span>(2));
document.writeln(Math.PI.<span style="font-size:18px;">toPrecision</span>(7));
document.writeln(Math.PI.<span style="font-size:18px;">toPrecision</span>());
// 結果
3.1
3.141593<pre name="code" class="javascript">3.141592653589793
number.toString( radix )
toString 方法把 number 轉換成一個字符串。radix 參數是可選的,控制基數,範圍在 2 ~ 36,通常爲整數,可以爲任意數字。默認值是10。
document.writeln(Math.PI.toString(8));
document.writeln(Math.PI.toString(16));
document.writeln(Math.PI.toString());
// 結果
3.1103755242102643
3.243f6a8885a3
3.141592653589793
4、對象
object.hasOwnProperty(name)
如果對象是否包含一個名爲 name 的屬性,返回ture。不檢查原型鏈中是否包同名屬性。如果屬性名就是 ‘hasOwnProperty’,則不起作用,會返回false。
5、字符串
string.charAt(pos)
charAt 方法返回在 string 中 pos 位置處的字符。如果 pos 不合法(小於0 或者大於等於字符串的長度),會返回一個空字符串。
var name = 'Curly';
var initial = name.charAt(0); // initial 是 'C'
string.charCodeAt(pos)
charAt 方法返回在 string 中 pos 位置處的字符的字符碼位。如果 pos
不合法(小於0 或者大於等於字符串的長度),會返回NaN。
var name = 'Curly';
var initial = name.charCodeAt(0); // initial 是 67
string.indexOf(searchString, position)
indexOf 方法在 string 中查找字符串 searchString,如果查找到則返回第一個匹配字符的位置,如果沒有查找到則返回 -1。可選參數position 可設置從 string 的指定位置開始向後查找 。var text = 'Mississippi';
var p = text.indexOf('ss'); // p 是 2
p = text.indexOf('ss', 3); // p 是 5
p = text.indexOf('ss', 6); // p 是 -1
string.lastIndexOf(searchString, position)
lastIndexOf 方法與 indexOf 方法類似,只不過是從字符串的末尾開始查找。可選參數 position 可設置從 string 的指定位置開始向前查找 。var text = 'Mississippi';
var p = text.lastIndexOf('ss'); // p 是 5
p = text.lastIndexOf('ss', 3); // p 是 2
p = text.lastIndexOf('ss', 6); // p 是 5
string.localeCompare(that)
localeCompare 比較兩個字符串,如果string 小於 that,則結果爲 -1,如果相等,結果爲 0。類似於數組 sort 方法的默認比較函數。
string.match(regexp)
match 方法讓字符串和一個正則表達式進行匹配。如果 regexp 包含 g 標識,生成一個包含所有匹配(除捕獲分組之外)的數組。
string.replace(searchValue, replaceValue)
replace 方法在string 中查找 searchValue 字符串,替換爲 replaceValue 字符串,並返回一個新的字符串。如果 searchValue 是一個字符串,僅在第一次出現的時候被替換;如果 searchValue 是一個正則表達式,並帶有g標識,則會替換所有的匹配。
string.search(regexp)
search 方法和 indexOf 方法類似,只是參數是正則表達式,如果找到匹配,返回第一個匹配的首字符位置,沒有找到匹配,則返回 -1 。忽略參數的 g 標識,且沒有 position 參數。
string.slice(start, end)
slice 方法複製 string 的一部分字符構造一個新的字符串。用法與 Array.slice 方法相一致。
var text = 'and in it he says "Any damn fool could';
var a = text.slice(18);
<pre name="code" class="javascript">// a 是 '"Any damn fool could'
var b = text.slice(0, 3);// b 是 'and'var c = text.slice(-5);// c 是 'could'
string.split(separator, limit)
split 方法根據 separator 將 string 分割成片段來創建一個字符串數組。可選參數 limit 是限制分割的數量。separator 可以是一個正則表達式或字符串。
如果 separator 是一個空字符,返回一個單字符的數組:
var digits = '0123456789';
var a = digits.split(' ', 5);
// a 是 ['0', '1', '2', '3', '4']
分隔符兩邊的每個單元文本都會被複制到數組中:
var c = '|a|b|c|'.split('|');
// c 是 [' ', 'a', 'b', 'c', ' '];
此方法會忽略 g 標識。
string.toLocaleLowerCase()
toLocaleLowerCase 方法返回一個新字符串,使用本地化規則將string中的所有字母轉換爲小寫格式。主要用在土耳其語上。
string.toLocaleUpperCase()
toLocaleUpperCase 方法返回一個新字符串,使用本地化規則將string中的所有字母轉換爲大寫格式。主要用在土耳其語上。
string.toLowerCase()
toLowerCase 方法返回一個新字符串,將string中的所有字母轉換爲小寫格式。
string.toUpperCase()
toUpperCase 方法返回一個新字符串,將string中的所有字母轉換爲大寫格式。
String.fromCharCode(char...)
String.fromCharCode 根據一串數字編碼返回一個字符串。
var a = String.fromCharCode(67, 97, 116);
// a 是 'Cat'
字符串方法總結:
根據位置獲取一個字符或編碼:charAt(獲取字符)、charCodeAt(獲取字符編碼)
字符編碼轉字符:String.fromCharCode(根據字符編碼轉字符串)
查找字符:indexOf(從前往後找)、lastIndexOf(從後往前找)、match(找正則表達式)、search(找正則表達式)、replace(查找後替換爲新字符串)
複製:slice(從 start 複製到 end 的字符串)
轉爲數組:split(將字符串根據分隔符創建數組)
字母大小寫轉換:toLocaleLowerCase(本地規則轉小寫)、toLocaleUpperCase(本地規則轉大寫)、toLowerCase(轉小寫)、toUpperCase(轉大寫)
字符串方法中,忽略了 concat 方法和 substring 方法,concat 方法用 '+' 運算符替代,substring 方法用 slice 完全可以實現其功能。