字符串&數(shù)組方法

介紹一些項(xiàng)目常用到的數(shù)組和字符串方法撵渡,這些方法方便我們靈活運(yùn)用請求的數(shù)據(jù)中的數(shù)組或者字符串融柬。

數(shù)組方法

  1. 字符串轉(zhuǎn)換為數(shù)組
  • split():
    作為字符串方法,我們提供一個參數(shù)趋距,作為字符串分割的字符粒氧,并返回分隔符之間的字串,作為數(shù)組中的項(xiàng)节腐。

    (1)創(chuàng)建字符串

     let myData = 'Manchester,London,liverpool,leeds'
    

    (2)用逗號分隔:

    let myArray = myData.split(',');
    console.log(myArray)
    

    (3)可以使用join() 方法進(jìn)行相反的操作

    let myNewString = myArray.join(',');
    
  • toString():
    將數(shù)組轉(zhuǎn)換為字符串的另一種方法外盯,可以比join()更簡單,因?yàn)樗恍枰粋€參數(shù)铜跑,但更有限制门怪,使用join()可以指定不同的分隔符

    let dogNames = ["Rocket","Flash","Bella","Slugger"];
    dogNames.toString(); //Rocket,Flash,Bella,Slugger
    
  1. 添加和刪除數(shù)組項(xiàng)
  • push()
    需要添加一個或多個到數(shù)組末尾的元素時使用

    myArray.push('Cardiff');
    
  • pop()
    從數(shù)組中刪除最后一個元素,直接使用

    myArray.pop();
    
  • unshift()锅纺、 shift()
    從功能上與 push() 和 pop() 完全相同掷空,只是它們分別作用于數(shù)組的開始,而不是結(jié)尾囤锉。

  1. 其他
  • map():
    創(chuàng)建一個新數(shù)組坦弟,其結(jié)果是該數(shù)組中的每個元素都調(diào)用一個提供的函數(shù)后返回的結(jié)果。map 不修改調(diào)用它的原數(shù)組本身官地。
    map為同步函數(shù)酿傍,遍歷數(shù)組中每一項(xiàng)請求數(shù)據(jù)時,要注意使用

    var new_array = arr.map(function callback(currentValue[ index[, array]]) { 
      }[, thisArg])
    
     //舉個例子: 拿到請求數(shù)據(jù)data之后驱入,給content數(shù)組中的每一項(xiàng)添加key;
     const list = data.content.map(item =>({...item, key: uuidv1()}))
    

    callback:生成新數(shù)組元素的函數(shù)赤炒,使用三個參數(shù):
    currentValue:callback 數(shù)組中正在處理的當(dāng)前元素。
    index可選:callback 數(shù)組中正在處理的當(dāng)前元素的索引亏较。
    array可選:callback map 方法被調(diào)用的數(shù)組莺褒。
    thisArg可選:執(zhí)行 callback 函數(shù)時使用的this 值。

  • every():
    測試一個數(shù)組內(nèi)的所有元素是否都能通過某個指定函數(shù)的測試雪情。它返回一個布爾值遵岩。

    arr.every(callback[, thisArg])  
    

    例子:

      function isBigEnough(element, index, array) {
      return element >= 10;
      }
      [12, 5, 8, 130, 44].every(isBigEnough);   // false
      [12, 5, 8, 130, 44].every(x => x >= 10); //箭頭函數(shù) false
    
  • some()
    測試是否至少有一個元素可以通過被提供的函數(shù)方法。該方法返回一個Boolean類型巡通。
    依次執(zhí)行數(shù)組的每個元素尘执,如果有一個元素滿足條件,則返回true宴凉,剩余的元素不再會執(zhí)行檢測誊锭。
    不會對空數(shù)組進(jìn)行檢測,不會改變原始數(shù)組弥锄。

    var ages = [3, 10, 18, 20]
    ages.some(item => item>18)   //true 
    
  • find()
    返回數(shù)組中滿足提供的測試函數(shù)的第一個元素的炉旷,之后的值不再進(jìn)行檢測签孔。沒有找到時返回 undefined

    var ages = [3, 10, 18, 20]
    ages.find(item => item>18)   //20
    
  • findIndex()
    返回數(shù)組中滿足提供的測試函數(shù)的第一個元素的值的下標(biāo),之后的值不再進(jìn)行檢測窘行。沒有找到時返回 -1

    var ages = [3, 10, 18, 20]
    ages.findIndex(item => item>30)   //-1
    
  • filter()
    創(chuàng)建一個新數(shù)組, 其包含通過所提供函數(shù)實(shí)現(xiàn)的測試的所有元素饥追。

    var newArray = arr.filter(callback(element[, index[, array]])[, thisArg])  
    const result = words.filter(word => word.length > 6);
    
  • sort()
    數(shù)組自帶的排序方法,默認(rèn)情況下會將元素按照字符串進(jìn)行比較罐盔。
    (1)當(dāng)元素為字符串時:
    將元素從字符串的第一位開始比較但绕,第一位相同時比較后

    var arr = ["cb","a","g","cy"];
    arr.sort();
    console.log(arr); //["a","cb","cy","g"]
    

    (2)當(dāng)元素為數(shù)字時:
    默認(rèn)將數(shù)字元素當(dāng)做字符串比較,從第一位開始比較惶看,第一位相同時比較后

    var arr2 = [20,13,11,8,0,11];
    arr2.sort();
    console.log(arr2); //[0,11,11,13,20,8]
    

    (3)控制sort()方法的排序方式:

     var arr2 = [20,13,11,8,0,11];
     //按升序排列
     arr2.sort(function(a,b){
      //a,b表示相鄰的兩個元素
      //若返回值>0,數(shù)組元素將按升序排列
      //若返回值<0,數(shù)組元素將按降序排列
      return a-b; 
     });
     console.log(arr2); //[0,8,11,11,13,20]; 新數(shù)組按升序排 
     列
    //按降序排列
     arr2.sort(function(a,b){
      return b-a; 
     });
     console.log(arr2); //[20,13,11,11,8,0]; 
    
  • splice()
    通過刪除替換現(xiàn)有元素或者原地添加新的元素來修改數(shù)組,并以數(shù)組形式返回被修改的內(nèi)容捏顺。此方法會改變原數(shù)組

    // 示例場景是:
    // 數(shù)據(jù)按頁獲取 
    // 在列表頁對某個item進(jìn)行操作修改了該item數(shù)據(jù)
    // 為達(dá)到重新更新單個item數(shù)據(jù) 纬黎,頁面所處頁數(shù)不變de效果
    // 在commit之前先刪掉那一頁的數(shù)據(jù)幅骄,在相同的位置插入獲取到的
      
        let currentList = [...state.pubAllOrder];
        if (isReload) {    //利用isReload判斷是要覆蓋數(shù)組 還是 初次加載該頁數(shù)據(jù)
           const {page, size} = pubOrders;
           currentList.splice((page)*size, size, ...list)
         } else {
           currentList = [...currentList, ...list]
        }
    

    語法:array.splice(start[, deleteCount[, item1[, item2[, ...]]]])
    start: 指定修改的開始位置(從0計數(shù)).如果超出了數(shù)組的長度,則從數(shù)組末尾開始添加內(nèi)容本今;如果是負(fù)值拆座,則表示從數(shù)組末位開始的第幾位
    deleteCount(可選):整數(shù),表示要移除的數(shù)組元素的個數(shù)冠息。
    如果 deleteCount 被省略了挪凑,或者如果它大于或者等于start之后的所有元素的數(shù)量,那么start之后數(shù)組的所有元素都會被刪除逛艰。
    如果 deleteCount 是 0 或者負(fù)數(shù)躏碳,則不移除元素。這種情況下散怖,至少應(yīng)添加一個新元素菇绵。
    item1,item2...(可選):要添加進(jìn)數(shù)組的元素,從start 位置開始。如果不指定镇眷,則 splice() 將只刪除數(shù)組元素咬最。

字符串方法

首先定義一個字符串:

let browserType = 'mozilla';
  • indexOf()
    找出一個較小的字符串是否存在于一個較大的字符串中

    browserType.indexOf('zilla');//output:2
    browserType.indexOf('vanilla');//output:-1
    
  • slice()
    提取字符串中的子字符串,知道開始的位置偏灿,以及結(jié)束的字符丹诀。

    browserType.slice(0,3); //output:moz  
    

    如果想知道在某個字符之后提取字符串中的所有剩余字符钝的,則不必包含第二個參數(shù)翁垂,而只需要包含要從中提取的字符位置 字符串中的其余字符。

    browserType.slice(2);//output:'zilla'
    
  • toLowerCase()硝桩、toUpperCase()
    將所有字符分別轉(zhuǎn)換為小寫或大寫

  • replace()
    將字符串中的一個子字符串替換為另一個子字符串,它需要兩個參數(shù) - 要被替換下的字符串和要被替換上的字符串沿猜。

    browserType = browserType.replace('moz','van');。
    
  • match()
    在字符串內(nèi)檢索指定的值碗脊,或找到一個或多個正則表達(dá)式的匹配啼肩。
    返回值:存放匹配結(jié)果的數(shù)組。

    match示例
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市祈坠,隨后出現(xiàn)的幾起案子害碾,更是在濱河造成了極大的恐慌,老刑警劉巖赦拘,帶你破解...
    沈念sama閱讀 216,919評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件慌随,死亡現(xiàn)場離奇詭異,居然都是意外死亡躺同,警方通過查閱死者的電腦和手機(jī)阁猜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,567評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蹋艺,“玉大人剃袍,你說我怎么就攤上這事∩咏鳎” “怎么了民效?”我有些...
    開封第一講書人閱讀 163,316評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長侍芝。 經(jīng)常有香客問我研铆,道長,這世上最難降的妖魔是什么州叠? 我笑而不...
    開封第一講書人閱讀 58,294評論 1 292
  • 正文 為了忘掉前任棵红,我火速辦了婚禮,結(jié)果婚禮上咧栗,老公的妹妹穿的比我還像新娘逆甜。我一直安慰自己,他們只是感情好致板,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,318評論 6 390
  • 文/花漫 我一把揭開白布交煞。 她就那樣靜靜地躺著,像睡著了一般斟或。 火紅的嫁衣襯著肌膚如雪素征。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,245評論 1 299
  • 那天萝挤,我揣著相機(jī)與錄音御毅,去河邊找鬼。 笑死怜珍,一個胖子當(dāng)著我的面吹牛端蛆,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播酥泛,決...
    沈念sama閱讀 40,120評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼今豆,長吁一口氣:“原來是場噩夢啊……” “哼嫌拣!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起呆躲,我...
    開封第一講書人閱讀 38,964評論 0 275
  • 序言:老撾萬榮一對情侶失蹤异逐,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后插掂,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體应役,經(jīng)...
    沈念sama閱讀 45,376評論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,592評論 2 333
  • 正文 我和宋清朗相戀三年燥筷,在試婚紗的時候發(fā)現(xiàn)自己被綠了箩祥。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,764評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡肆氓,死狀恐怖袍祖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情谢揪,我是刑警寧澤蕉陋,帶...
    沈念sama閱讀 35,460評論 5 344
  • 正文 年R本政府宣布,位于F島的核電站拨扶,受9級特大地震影響凳鬓,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜患民,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,070評論 3 327
  • 文/蒙蒙 一缩举、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧匹颤,春花似錦仅孩、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,697評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至赦肃,卻和暖如春溅蛉,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背他宛。 一陣腳步聲響...
    開封第一講書人閱讀 32,846評論 1 269
  • 我被黑心中介騙來泰國打工船侧, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人堕汞。 一個月前我還...
    沈念sama閱讀 47,819評論 2 370
  • 正文 我出身青樓勺爱,卻偏偏與公主長得像晃琳,于是被迫代替她去往敵國和親讯检。 傳聞我的和親對象是個殘疾皇子琐鲁,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,665評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 數(shù)組的方法 1.push(); 方法:在數(shù)組的最后面添加內(nèi)容,返回值是添加后數(shù)組的長度 2.pop() 方法:把數(shù)...
    code武閱讀 737評論 0 0
  • 其實(shí)這個東西吧人灼,可以用來做一定的兼容處理围段,但更多是為了加深對語言本身的理解,畢竟原生方法更高效投放,鍛煉一下你靈活運(yùn)用...
    西蘭花偉大炮閱讀 521評論 0 0
  • 第五章******************************************************...
    fastwe閱讀 679評論 0 0
  • 尊敬的黃校長奈泪,親愛的老師們,今天是我日精進(jìn)第58天灸芳,分享如下: 比學(xué)習(xí):今天學(xué)習(xí)《自律力》涝桅,不知道想要什么,就永遠(yuǎn)...
    冰雨天涯閱讀 97評論 0 0
  • 大愛的老師烙样,智慧美麗的班主任冯遂,親愛的眾學(xué)兄們:大家好!我是來自山東桓臺姜博士眼鏡的李艷谒获,今天是2019.7.4我的...
    姜博士明潤視光李艷閱讀 191評論 0 0