1. 程式人生 > >JS的字串和陣列常用函式

JS的字串和陣列常用函式

目錄

字串(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]