JS常用的對象方法1——string和array對象

在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);
image.png
方法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);//原字符串不變
image.png
方法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]
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市饮亏,隨后出現(xiàn)的幾起案子耍贾,更是在濱河造成了極大的恐慌阅爽,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,080評論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件荐开,死亡現(xiàn)場離奇詭異付翁,居然都是意外死亡,警方通過查閱死者的電腦和手機晃听,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,422評論 3 385
  • 文/潘曉璐 我一進店門百侧,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人能扒,你說我怎么就攤上這事佣渴。” “怎么了初斑?”我有些...
    開封第一講書人閱讀 157,630評論 0 348
  • 文/不壞的土叔 我叫張陵辛润,是天一觀的道長。 經(jīng)常有香客問我见秤,道長砂竖,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,554評論 1 284
  • 正文 為了忘掉前任鹃答,我火速辦了婚禮乎澄,結果婚禮上,老公的妹妹穿的比我還像新娘测摔。我一直安慰自己三圆,他們只是感情好,可當我...
    茶點故事閱讀 65,662評論 6 386
  • 文/花漫 我一把揭開白布避咆。 她就那樣靜靜地躺著舟肉,像睡著了一般。 火紅的嫁衣襯著肌膚如雪查库。 梳的紋絲不亂的頭發(fā)上路媚,一...
    開封第一講書人閱讀 49,856評論 1 290
  • 那天,我揣著相機與錄音樊销,去河邊找鬼整慎。 笑死,一個胖子當著我的面吹牛围苫,可吹牛的內(nèi)容都是我干的裤园。 我是一名探鬼主播,決...
    沈念sama閱讀 39,014評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼剂府,長吁一口氣:“原來是場噩夢啊……” “哼拧揽!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,752評論 0 268
  • 序言:老撾萬榮一對情侶失蹤淤袜,失蹤者是張志新(化名)和其女友劉穎痒谴,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體铡羡,經(jīng)...
    沈念sama閱讀 44,212評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡积蔚,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,541評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了烦周。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片尽爆。...
    茶點故事閱讀 38,687評論 1 341
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖读慎,靈堂內(nèi)的尸體忽然破棺而出漱贱,到底是詐尸還是另有隱情,我是刑警寧澤贪壳,帶...
    沈念sama閱讀 34,347評論 4 331
  • 正文 年R本政府宣布饱亿,位于F島的核電站蚜退,受9級特大地震影響闰靴,放射性物質發(fā)生泄漏。R本人自食惡果不足惜钻注,卻給世界環(huán)境...
    茶點故事閱讀 39,973評論 3 315
  • 文/蒙蒙 一蚂且、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧幅恋,春花似錦杏死、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,777評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至品追,卻和暖如春玄括,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背肉瓦。 一陣腳步聲響...
    開封第一講書人閱讀 32,006評論 1 266
  • 我被黑心中介騙來泰國打工遭京, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人泞莉。 一個月前我還...
    沈念sama閱讀 46,406評論 2 360
  • 正文 我出身青樓哪雕,卻偏偏與公主長得像,于是被迫代替她去往敵國和親鲫趁。 傳聞我的和親對象是個殘疾皇子斯嚎,可洞房花燭夜當晚...
    茶點故事閱讀 43,576評論 2 349