<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          「1分鐘學(xué)JS基礎(chǔ)」移除最后一個(gè)字符、Promise.allSettled()的使用、日期數(shù)組排序

          共 3739字,需瀏覽 8分鐘

           ·

          2021-11-15 19:51

          大家好,本篇文章將用 1 分鐘的時(shí)間給大家分享下如何移除字符串最后一個(gè)字符,如何使用Promise.allSettled() 方法、以及如何進(jìn)行日期數(shù)組的排序。

          一、如何移除字符串最后一個(gè)字符

          1、常用方法

          要從 JavaScript 中的字符串中刪除最后一個(gè)字符,您可能會(huì)使用 slice() 方法。它需要兩個(gè)參數(shù):開始索引位置和結(jié)束索引位置。slice() 支持負(fù)索引,這意味著 slice(0, -1) 等價(jià)于 slice(0, str.length - 1)

          let?str?=?'Masteringjs.ioF';
          str.slice(0,?-1);?//?Masteringjs.io

          2、其他方法

          slice() 使用起來(lái)更容易,但是還有其他的方法:substring() 和 replace()。substring() 沒有負(fù)索引,所以從字符串中刪除最后一個(gè)字符時(shí)一定要使用 str.length - 1 這個(gè)參數(shù) 。replace() 可以將字符串或正則表達(dá)式作為要替換的參數(shù)。使用 /.$$/, '') 用空字符串替換字符串的最后一個(gè)字符。

          let?str?=?'Masteringjs.ioF';
          str.substring(0,?str.length?-?1);?//?Masteringjs.io
          str.substr(0,?str.length?-?1);?//?Masteringjs.io
          str.replace(/.$/,?'');?//?Masteringjs.io

          使用replace(),您可以根據(jù)正則表達(dá)式的內(nèi)容刪除字符串的最后一個(gè)字符。如果最后字符是數(shù)字,您還可以使用 .replace(/\d$/, '') ,如下所示。

          //?For?a?number,?use?\d$.
          let?str?=?'Masteringjs.io0';
          str.replace(/\d$/,?'');?//?Masteringjs.io

          let?str2?=?'Masteringjs.io0F';
          //?If?the?last?character?is?not?a?number,?it?will?not?replace.
          str.replace(/\d$/,?'');?//?Masteringjs.io0F;

          二、如何理解?Promise.allSettled()

          1、基礎(chǔ)介紹

          [Promise.allSettled()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/allSettled) 很類似 [Promise.all()](https://masteringjs.io/tutorials/fundamentals/promise-all),但是有兩個(gè)關(guān)鍵點(diǎn)是不同的:

          • allSettled() 將會(huì)返回所有承諾的請(qǐng)求狀態(tài)即使有失敗的
          • allSettled() 將會(huì)返回一個(gè)對(duì)象數(shù)組,包含了請(qǐng)求的狀態(tài)和值,類似 {status, value, reason}

          承諾包含三個(gè)狀態(tài):

          • Pending 表示操作正在進(jìn)行中
          • Fulfilled 表示操作成功
          • Rejected 表示操作失敗



          “Settled”意味著承諾要么被履行(成功),要么被拒絕(失敗),所以你可以把 allSettled() 想象成等待數(shù)組中的所有承諾都被執(zhí)行。

          2、返回值

          allSettled() 將會(huì)返回一個(gè)對(duì)象數(shù)組,承諾被成功執(zhí)行時(shí)返回 {status: 'fulfilled', value},如果失敗將會(huì)返回 {status: 'rejected', reason}。

          //?[{?status:?"fulfilled",?value:?"Hello?World"?},?{?status:?"rejected",?reason:?"fail"?}]
          const?res?=?await?Promise.allSettled(
          [Promise.resolve('Hello?World'),?
          Promise.reject('fail')]);

          如果要檢查承諾是否有執(zhí)行失敗的,你可以使用 Array#find() 方法。

          res.find(({?status?})?=>?status?===?'rejected');

          3、瀏覽器支持

          allSettled() 在 IE 瀏覽器和 Node 12.9 以下的版本不支持,因此你可以使用 Promise.all() 模擬支持,示例代碼如下:

          function?allSettled(promises)?{
          ??const?_promises?=?promises.map(p?=>?{
          ????return?p.
          ??????then(value?=>?({?status:?'fulfilled',?value?})).
          ??????catch(reason?=>?({?status:?'rejected',?reason?});
          ??});
          ??return?Promise.all(_promises);
          }

          三、如何排序日期數(shù)組

          1、基礎(chǔ)方法

          日期數(shù)組排序比較簡(jiǎn)單,我們可以使用內(nèi)置的排序方法就能輕松解決,示例代碼如下:

          const?dates?=?[
          ??new?Date('July?20,?2021?20:17:40'),
          ??new?Date('August?19,?2021?23:15:30'),
          ??new?Date('March?13,?2021?04:20'),
          ??new?Date('October?2,?2021?11:05')
          ];
          dates.sort((date1,?date2)?=>?date1?-?date2);

          /*
          [
          ??2021-03-13T09:20:00.000Z,
          ??2021-07-21T00:17:40.000Z,
          ??2021-08-20T03:15:30.000Z,
          ??2021-10-02T15:05:00.000Z
          ]
          */

          dates;

          2、按照對(duì)象的日期屬性排序

          同樣,按照對(duì)象的日期屬性排序也很簡(jiǎn)單,同樣我們可以使用上述的內(nèi)置 sort() 方法,示例代碼如下:

          const?d1?=?new?Date('2019-06-01');
          const?d2?=?new?Date('2018-06-01');
          const?d3?=?new?Date('2019-06-01');

          const?objects?=?[
          ??{?createdAt:?d1,?name:?'Test?1'?},
          ??{?createdAt:?d2,?name:?'Test?2'?},
          ??{?createdAt:?d3,?name:?'Test?3'?}
          ];

          objects.sort((a,?b)?=>?a.createdAt?-?b.createdAt);

          //?[?'Test?2',?'Test?1',?'Test?3'?]
          console.log(objects.map(o?=>?o.name));

          3、去除時(shí)間按日期排序

          有時(shí)候,你只需要按照日期排序,需要忽略日期的時(shí)間部分,這時(shí)你需要借助 [setHours()](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setHours) ?方法,示例代碼如下:

          const?dates?=?[
          ??new?Date('July?20,?2021?20:17:40'),
          ??new?Date('August?19,?2021?23:15:30'),
          ??new?Date('July?20,?2021?23:15:30'),
          ??new?Date('August?19,?2021?20:17:40')
          ];

          //?`setHours(0,?0,?0,?0)`?zeroes?out?hours,?minutes,?seconds,?and?milliseconds
          dates.sort((date1,?date2)?=>?new?Date(date1).setHours(0,?0,?0,?0)?-?new?Date(date2).setHours(0,?0,?0,?0));

          /*
          [
          ??2021-07-21T00:17:40.000Z,
          ??2021-07-21T03:15:30.000Z,
          ??2021-08-20T03:15:30.000Z,
          ??2021-08-20T00:17:40.000Z
          ]
          */

          dates;

          結(jié)束

          今天的分享就到這里,感謝大家的閱讀。

          內(nèi)容參考:https://masteringjs.io/


          瀏覽 49
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  91丨九色丨蝌蚪丨对白 | 小黄片在线马上播放 | 另类专区亚洲 | 国产小视频在线播放 | 色黄乱婬免费视频 |