JS的字串和陣列常用函式
阿新 • • 發佈:2018-11-21
目錄
字串(String)
String物件常用的方法:
方法作用 | 方法名 | 返回值 |
---|---|---|
搜尋字元 | ||
1 返回指定位置的字元 | stringObject.charAt(index) | 字串中第一個字元的下標是 0。如果引數 index 不在 0 與 string.length 之間,該方法將返回一個空字串。3 返回值:找到的字元或者空字元 |
2 返回某個指定的字串值在字串中首次出現的位置。 | str.indexOf(searchValue,[fromIndex]) | 從fromIndex位置開始找,找到返回 searchvalue 的第一次出現的位置(下標數字),找不到返回-1 |
3 符串內檢索指定的值,或找到一個或多個正則表示式的匹配。 | stringObject.match(searchvalue或regexp) | 存放匹配結果的陣列 |
字串轉陣列 | ||
字串分割為字元陣列 | stringObject.split(separator,【howmany】) | 一個字串陣列。該陣列是通過在 separator 指定的邊界處將字串 stringObject 分割成子串建立的。返回的陣列中的字串不包括 separator 自身 |
5 檢所指定字串或者正則表示式 | stringObject.search(regexp或str) | stringObject 中第一個與 regexp 相匹配的子串的起始位置(下標數字)。註釋:如果沒有找到任何匹配的子串,則返回 -1 |
擷取字元 | ||
1 字串的擷取slice(切片,擷取) | stringObject.slice(start,end) | 一個新的字串。包括字串 stringObject 從 start 開始(包括 start)到 end 結束(不包括 end)為止的所有字元。 |
2 擷取抽取從 start 下標開始的指定數目的字元 | stringObject.substr(start,【length】) | 一個新的字串,包含從 stringObject 的 start(包括 start 所指的字元) 處開始的 length 個字元。如果沒有指定 length,那麼返回的字串包含從 start 到 stringObject 的結尾的字元。 |
3 提取字串中兩個指定的索引號之間的字元 | stringObject.substring(start,【stop】) | 一個新的字串,該字串值包含 stringObject 的一個子字串,其內容是從 start 處到 stop-1處的所有字元,其長度為 stop 減 start。 |
字串連線(拼接) | ||
連線字串 | stringObject.concat(stringX,stringX,…,stringX) | 1concat() 方法將把它的所有引數轉換成字串,然後按順序連線到字串 stringObject 的尾部,並返回連線後的字串。請注意,stringObject 本身並沒有被更改。 2 stringObject.concat() 與 Array.concat() 很相似。 |
替換字串 | ||
替換與正則表示式匹配的子串 | stringObject.replace(regexp/substr,replacement) | 一個新的字串,是用 replacement 替換了 regexp 的第一次匹配或所有匹配之後得到的。 |
英文字串轉大小寫 | ||
轉小寫 | stringObject.toLocaleLowerCase() stringObject.toLowerCase() | 小寫 |
轉大寫 | stringObject.toLocaleUpperCase() toUpperCase() | 大寫 |
字串迴圈
for(var i = 0;i<str.length;i++){
console.log(str[i]);
}
輸出結果:列印輸出一行一行的結果
陣列(Array)
Array物件常用的方法:
方法作用 | 方法名 | 返回值 |
---|---|---|
數組合並 | ||
arrayObject.concat(arrayX,【arrayX,…,arrayX】) | 新的陣列 | |
陣列轉字串 | ||
arrayObject.join(separator) | 返回一個字串 | |
arrayObject.toString() | 返回值與沒有引數的 join() 方法返回的字串相同 | |
arrayObject.toLocaleString() | 瀏覽器以字串用逗號隔開輸出 | |
陣列擷取 | ||
arrayObject.slice(start,【end】) | 注意1:該方法並不會修改陣列,而是返回一個子陣列。 | |
2如果想刪除陣列中的一段元素,應該使用方法 Array.splice() | ||
陣列刪除/【新增】 | ||
arrayObject.splice(index,howmany,【item1,…,itemX】) | index:刪除的位置,howmanny:刪除個數,item:向陣列填的新專案 | |
陣列棧方法 | ||
頭部增加 | arrayObject.unshift(newelement1,【newelement2,…,newelementX】) | 返回值:arrayObject 的新長度 |
頭部刪除 | arrayObject.shift() | 1 陣列原來的第一個元素的值。2 如果陣列是空的,那麼 shift() 方法將不進行任何操作,返回 undefined 值。 |
尾部增添 | arrayObject.push(newelement1,【newelement2,…,newelementX】) | 把指定的值新增到陣列後的新長度(數字),會改變原陣列的值 |
尾部刪除 | arrayObject.pop() | 刪除並返回陣列的最後一個元素 |
陣列排序 | ||
arrayObject.sort(sortby) | 1 按照字元編碼的順序進行排序 2 會改變原陣列的排序 | |
顛倒陣列順序 | ||
arrayObject.reverse() | 返回陣列本身,會改變原陣列,不會建立新陣列 | |
陣列過濾 | ||
arrayObject.filter(callback(element[, index[, array]])[, thisArg]) | 1filter() 方法建立一個新的陣列,新陣列中的元素是通過檢查指定陣列中符合條件的所有元素。2 注意: filter() 不會對空陣列進行檢測。3 注意: filter() 不會改變原始陣列。 |
陣列迴圈
forEach迴圈
形式
arr.forEach(function (item, index){},arr);
作用:
遍歷陣列
引數說明
(1)可以接收兩個引數,第一個引數是一個函式,就是陣列的每一項要執行這個函式。這個函式接收三個引數,分別是:陣列中的項,下標,陣列本身(2)第二個引數是一個數組(可有可無)。如果有,前面函式中的this就指向這個陣列;如果沒有,前面函式的this就指向window。
let arr = [1, 2, 3, 4, 5, 6, 7];
arr.forEach(function(item, index, arr) {
console.log(item+"============"+index);
//console.log(arr, '-----------------')
console.log(this);
//(7) [1, 2, 3, 4, 5, 6, 7]
},arr);
for (var i = 0; i < arr.length; i++) {
console.log(arr[i]+"============"+i);
}
列印結果:
1============0
2============1
3============2
4============3
5============4
6============5
7============6
for-of迴圈
let a = ['A', 'B', 'C'];
for (let attr of a) {
console.log(attr);//A B C
}
返回陣列函式的引用
var arr = ["夏敏","石守信","高懷德","李隆基"];
/*
* 1 返回對建立此物件的陣列函式的引用。
* constructor 屬性返回對建立此物件的陣列函式的引用。
*/
if(arr.constructor == Array){
console.log("陣列成員!!!");
}else if(arr.constructor == Function){
console.log("函式成員!!!");
}else{
console.log("不知道");
}
過濾(filter)方法
獲取陣列中的偶數
var arr = [1,2,3,4,6,1,3,2,2,2];
Array.prototype.getEven = function(){
//注意arr是一個一個值傳進來的
return this.filter((arr) => arr%2==0);
}
console.log(arr.getEven());//返回:(6) [2, 4, 6, 2, 2, 2]
filter(element,index,self,thisValue)引數說明
var result = arr.filter(function(element,index,self,thisValue) {
var something = "返回結果~!!!";
console.log("當前元素的值:"+element);
console.log("當前元素的索引:"+index);
console.log("當前元素屬於的陣列物件:"+self);
console.log("回撥時用的值,傳遞給函式:"+thisValue);
add(thisValue);
return something;
});
function add(obj){
console.log("hello world"+obj);
}
console.log(result)//(10) [1, 2, 3, 4, 6, 1, 3, 2, 2, 2]
陣列去重
題目:給一個數組,找出不重複的數,並且返回它們。
思路:1 新建空陣列 2 遍歷原陣列,在新陣列中沒有出現就新增到新陣列中
1. 方法一:
var arr = [1,2,3,4,6,1,3,2,2,2];
function removeRepeat(obj){
var newArr = [];
for (var i = 0; i < obj.length; i++) {
if (newArr.indexOf(obj[i])== -1) {
newArr.push(obj[i]);
}else{
console.log('元素重複!!!');
}
}
return newArr;
}
console.log(removeRepeat(arr));//返回:(5)[1,2,3,4,6]
2. 方法二:
通過過濾函式arr.filter(element,index,arr,thisValue)去重
var result = arr.filter(function (element,index,self){
return self.indexOf(element) == index;
});
console.log(result);//(5) [1, 2, 3, 4, 6]
3. 方法三
雙層for迴圈遍歷,標記是否有相等元素,找到相同的元素,標記false,加入新的陣列,跳出本次迴圈。遍歷完成之後返回新陣列。
function unique(arr){
let newArr = [];
let isRepeat ;
for (var i = 0; i < arr.length; i++) {
isRepeat = false;
for (var j = i+1; j < arr.length; j++) {
if(arr[j] == arr[i]){
isRepeat = true;
break;
}
}
if (isRepeat == false) {
newArr.push(arr[i]);
}
}
return newArr;
}
console.log(unique(arr));//(5)[4, 6, 1, 3, 2]