在JavaScript中彭羹,一切皆為對象黄伊,字符串,數(shù)字派殷,數(shù)組还最,日期,json對象毡惜,甚至布爾值憋活,都是對象。所以我們聲明一個字符串虱黄,聲明一個布爾值悦即,它就是一個女朋友了,哦不橱乱,是對象辜梳。 [手動狗頭] ,而不像PHP泳叠,需要new關鍵詞去實例化 $girl = new Person(); 一個類(或者靜態(tài)調(diào)用)作瞄,才能成為對象。嗯危纫,理解這一點宗挥,就好辦了乌庶。
既然是對象,就有屬性和方法契耿,當我們聲明一個字符串瞒大,它已經(jīng)是一個對象了,我們可以直接調(diào)用它的方法了搪桂,下面介紹一些常用的方法透敌。
一、String對象
方法1: substr(start,length) : 字符串截取踢械,從指定索引開始扇谣,截取指定長度字符
方法2: substring(start,end) : 字符串截取哑蔫,截取從指定索引開始,到指定索引結束中間的字符串 ,[ start,end)
注意:
1毒返,方法1第二個參數(shù)指定了截取的長度细层,而方法2第二個參數(shù)指定截取的結束索引號
2辕录,方法2截取的字符串包括起始索引號start的字符 , 但不包括結束索引號end的字符
var str = 'hello world , hello china';
var a = str.substr(3,10);
var b = str.substring(3,10);
console.log(a);// 打印出:lo world ,
console.log(b);// 打印出:lo worl
方法3:search(regexp):返回字符串第一次出現(xiàn)的位置/索引號玫鸟,如果沒有返回-1
var str = 'hello world , hello china';
var c = str.search('world');
console.log(c);// 打印出:6
方法4: indexOf(searchString,position): 檢索字符串移稳,返回的是字符在字符串的下標蕴纳,第二個非必傳參數(shù)指定開始搜索的起始下標
var str = 'hello world , hello china';
var d = str.indexOf('hello',2);
console.log(d);// 打印出:14
方法5:match(regexp):在字符串內(nèi)檢索指定的值或找到一個或多個正則表達式的匹配,返回的是值而不是值的位置
var str = '報警電話110个粱,火警電話119古毛,求救電話120';
var e = str.match('電話');
var f = str.match(/[0-9]{3}/);
var g = str.match(/[0-9]{3}/g);//如果有g修飾,則匹配多個
console.log(e);
console.log(f);
console.log(g);
方法6:replace():替換匹配的字符串
var str = '報警電話110都许,火警電話119稻薇,求救電話120';
var h = str.replace(/[0-9]{3}/,'***');
var i = str.replace(/[0-9]{3}/g,'***');
console.log(h); //打印出:報警電話***,火警電話119胶征,求救電話120
console.log(i);//打印出:報警電話***塞椎,火警電話***,求救電話***
方法7:slice():提取字符串片段睛低,并在新的字符串中返回被提取的部分
var str1 = 'nihaoya wobuhaoya'
console.log(str1.slice(4,9)); //4位置開始案狠,到9的前一個位置結束
console.log(str1.slice(2,14));//start位置開始,end前一個位置結束
console.log(str1);//原字符串不變
console.log(str1.slice(-1,0)); //返回的是空字符串
console.log(str1.slice(30,100)); //長度超過字符串的長度钱雷,返回空字符串
console.log(str1.slice(-1,10));//返回的是空字符串
方法8:split():把字符分割成數(shù)組
var str1 = "hello-thinkyou-thinkyou-very-much";
console.log(str1.split(''));
var str2 = str1.split('-');
console.log(str2);
console.log(str1);//原字符串不變
方法9:大小寫轉換:
1骂铁,把字符串轉換成大寫:toLocaleUpperCase() , toUpperCase()
2罩抗,把字符串轉換成小寫:toLocaleLowerCase() 拉庵, toLowerCase()
注意:對有些地區(qū)來說,針對地區(qū)的方法與其通用方法得到的結果相同套蒂,但少數(shù)語言(如土耳其語言)會為Unicode大小寫轉換應用特殊的規(guī)則钞支,這時候就必須使用針對地區(qū)的方法來保證實現(xiàn)正確的轉換茫蛹。所以我們用toLocaleUpperCase() ,toLocaleLowerCase() 來進行轉換會保險一些烁挟。
?
二婴洼、array對象
屬性1:length 返回數(shù)組的長度
方法1:把數(shù)組轉換為字符串
注意:
1,toString() 方法 在其他對象eg:boolean,int,json 也是存在toString()方法的
2信夫,join(separator)方法 separator參數(shù)為分隔元素的分隔符,默認不傳則為逗號 卡啰,
var arr = [1,2,5,3,4,7,6];
var a = arr.toString();
console.log(a); //打印出: 1,2,5,3,4,7,6
var b = arr.join('-');
console.log(b); //打印出 : 1-2-5-3-4-7-6
方法2:在數(shù)組的尾部推入push()與取出pop()元素.
push()返回值是操作后新數(shù)組的長度,push()可以同時推入多個元素
pop()返回值是取出的元素
var arr = [1,2,5,3,4,7,6];
var a = arr.push('蘋果');
var b = arr.push('橘子','草莓');
console.log(a); // 打印出: 8
console.log(b); // 打印出: 10
console.log(arr); // 打印出:(10) [1, 2, 5, 3, 4, 7, 6, "蘋果", "橘子", "草莓"]
var c = arr.pop();
console.log(c); // 打印出: 草莓
console.log(arr); // 打印出:(9) [1, 2, 5, 3, 4, 7, 6, "蘋果", "橘子"]
方法3:在數(shù)組的頭部推入unshift()與取出shift()元素
unshift()返回新數(shù)組的長度静稻,可以同時推入多個元素
shift()返回值是取出的元素
var arr = [1,2,5,3,4,7,6];
var a = arr.unshift('蘋果','香蕉');
console.log(a);// 打印出: 9
console.log(arr);// 打印出: (9) ["蘋果", "香蕉", 1, 2, 5, 3, 4, 7, 6]
var b = arr.shift();
console.log(b);// 打印出: 蘋果
console.log(arr);// 打印出: (8) ["香蕉", 1, 2, 5, 3, 4, 7, 6]
方法4:slice(start,end):取出數(shù)組中的某一片段
返回從原數(shù)組中指定開始下標到結束下標之間的項組成的新數(shù)組(原數(shù)組不變)
方法5:splice(start,deleteCount)刪除數(shù)組中的某一片段
第一個參數(shù)為起始下標,第二個參數(shù)為刪除的元素個數(shù)匈辱。返回值為刪除的元素(原數(shù)組改變)
var arr = [1,2,5,3,4,7,6];
var b = arr.slice(2,4);
console.log(b); //打印出: (2) [5, 3]
var c = arr.splice(2,2);
console.log(c); //打印出: (2) [5, 3]
console.log(arr);//打印出返回被刪除后的數(shù)組 (5) [1, 2, 4, 7, 6]
方法6:sort():按指定的參數(shù)對數(shù)組進行排序
注意:
1振湾,默認是按照字母的升序,數(shù)字的升序排列亡脸,返回的值是經(jīng)過排序后的數(shù)組
2押搪,40會排5的前面,因為4 小于 5 浅碾,所以我們給數(shù)字排序大州,要傳入一個回調(diào)函數(shù)
var arr = [2,1,5,3,40,7,60];
var a = arr.sort();
console.log(a); //打印出: (7) [1, 2, 3, 40, 5, 60, 7]
var b = arr.sort(function (a,b) {
return a-b;
});
console.log(b); //打印出: (7) [1, 2, 3, 5, 7, 40, 60]
var c = arr.sort(function (a,b) {
return b-a;
});
console.log(c);//打印出:(7) [60, 40, 7, 5, 3, 2, 1]
3,同理垂谢,當我們需要給一個對象數(shù)組按照對象中某一個屬性排序時厦画,也需要傳入一個回調(diào)函數(shù):
var student = [
{name:'Mike',age:18},
{name:'Joe',age:22},
{name:'Mongo',age:9},
{name:'Tom',age:30}
];
var d = student.sort(compare('age'));
function compare(prop) {
return function (a,b) {
var value1 = a[prop];
var value2 = b[prop];
return value1-value2;
}
}
console.log(d);
/** 打印出:
0: {name: "Mongo", age: 9}
1: {name: "Mike", age: 18}
2: {name: "Joe", age: 22}
3: {name: "Tom", age: 30}
length: 4
__proto__: Array(0)
*/
方法7:indexOf():從數(shù)組的開頭向后查找,接受兩個參數(shù)滥朱,要查找的項和查找起點的位置索引
var arr = [2,1,5,3,40,7,40];
a = arr.indexOf(40,2);
console.log(a); //打印出: 4
方法8:forEach():對數(shù)組的每個元素執(zhí)行一次提供的函數(shù)根暑。
var student = [
{name:'Mike',age:18},
{name:'Joe',age:22},
{name:'Mongo',age:9},
{name:'Tom',age:31}
];
student.forEach(function (item) {
var desc = item.name+'今年'+item.age+'歲了';
if(item.age > 30) desc += ',還是沒車沒房';
console.log(desc);
});
/** 打印出:
Mike今年18歲了
Joe今年22歲了
Mongo今年9歲了
Tom今年31歲了,還是沒車沒房
* /
方法9:reverse() 方法用于顛倒數(shù)組中元素的順序
改變原數(shù)組,返回顛倒后的數(shù)組:
var arr = ['小明','小紅','小李'];
var a = arr.reverse();
console.log(arr); // 打印出: (3) ["小李", "小紅", "小明"]
console.log(a); // 打印出: (3) ["小李", "小紅", "小明"]
方法10:map()方法對數(shù)組的每一個元素運行給定的函數(shù)徙邻,返回函數(shù)調(diào)用的結果組成的數(shù)組
var arr = [1, 4, 9, 16];
var a = arr.map(x => x * 2); //對數(shù)組的每項*2
console.log(a); //打印出: [2, 8, 18, 32]
方法11: every和some方法(ES5):
1排嫌,every是所有函數(shù)的每個回調(diào)都返回true的時候才會返回true,當遇到false的時候終止執(zhí)行缰犁,返回false淳地。類似于: 且 &&
2,some函數(shù)是存在有一個函數(shù)返回true的時候終止執(zhí)行并返回true帅容,否則返回false薇芝。類似于: 或 ||
// every
var arr = [1,6,8,-2,-5,7,-4]
var isPositive = arr.every(function(value){
return value > 0;
})
console.log(isPositive) // false
//some
var arr = [1,6,8,-2,-5,7,-4]
var isPositive = arr.some(function(value){
return value > 0;
})
console.log(isPositive) // true
方法12:filter(function(element))方法 (ES5)
返回數(shù)組的子集,子集的元素是回調(diào)函數(shù)中返回true的元素丰嘉。其實就是filter篩選夯到、過濾的意思
var arr = [1,6,8,-2,-5,7,-4]
var positiverArr = arr.filter(function(value){
return value > 0
})
console.log(positiverArr); // 打印出:[1, 6, 8, 7]
console.log(arr); // 打印出:[1, 6, 8, -2, -5, 7, -4]