第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何簡化這段代碼以降低復(fù)雜度?

如何簡化這段代碼以降低復(fù)雜度?

Smart貓小萌 2023-07-20 14:52:28
由于有很多 if 語句,下面的代碼非常復(fù)雜。如何簡化這部分代碼?把最新的else if改成無條件的else語句,代碼會不會簡化?它會以同樣的方式起作用嗎?parse(value: string): NgbDateStruct {  if (value) {    const date = value.trim().split('-');    if (date.length === 1 && isNumber(date[0])) {      return {        year: toInteger(date[0]),        month: undefined as any,        day: undefined as any      };    } else if (date.length === 2 && isNumber(date[0]) && isNumber(date[1])) {      return {        year: toInteger(date[1]),        month: toInteger(date[0]),        day: undefined as any      };    } else if (date.length === 3 && isNumber(date[0]) && isNumber(date[1]) && isNumber(date[2])) {      return {        year: toInteger(date[2]),        month: toInteger(date[1]),        day: toInteger(date[0])      };    }  }  return undefined as any;}
查看完整描述

2 回答

?
瀟瀟雨雨

TA貢獻(xiàn)1833條經(jīng)驗 獲得超4個贊

好吧,你的代碼想起來很簡單,但是很長?。?/p>


如果你想要示例,我有 javascript vanilla 代碼:


function parse (value) {

? ? var list = (value + "").trim().split("-").reverse();

? ? if (list != 0 && list.every(x => !isNaN(x))) {

? ? ? ? return {

? ? ? ? ? ? year: parseInt(list[0]),

? ? ? ? ? ? month: parseInt(list[1]) || undefined,

? ? ? ? ? ? day: parseInt(list[2]) || undefined,

? ? ? ? }

? ? }

? ? return undefined;

}

// below for testing

[

? ? "08-11-2020",

? ? "11-2020",

? ? "2020",

? ? ""

].forEach(x => {console.log(x, parse(x))});

不幸的是,我沒有任何實現(xiàn)打字稿代碼的經(jīng)驗,但上面的 JavaScript 代碼可能會對你有所幫助。實際上我縮短了代碼,因為 javascript 帶來的優(yōu)點(缺點?),也許轉(zhuǎn)換為 typescript 不會有太大區(qū)別!

附加打字稿代碼:

在 typescriptlang.org 上

type NgbDateStruct = {

? ? year?: number;

? ? month?: number;

? ? day?: number;

};


function parse (value: string) : NgbDateStruct {

? ? var list = (value + "").trim().split("-").reverse().map(x => x || -1).map(Number);

? ? if (list.length > 0 && list.every(x => !isNaN(Number(x))) && list.every(x => x > -1)) {

? ? ? ? return {

? ? ? ? ? ? year: list[0] || undefined,

? ? ? ? ? ? month: list[1] || undefined,

? ? ? ? ? ? day: list[2] || undefined,

? ? ? ? }

? ? }

? ? return undefined as any;

}

// below for testing

[

? ? "08-11-2020",

? ? "11-2020",

? ? "2020",

? ? "",

? ? "nothing"

].forEach(x => {console.log(x, parse(x))});


查看完整回答
反對 回復(fù) 2023-07-20
?
長風(fēng)秋雁

TA貢獻(xiàn)1757條經(jīng)驗 獲得超7個贊

一種選擇是使用正則表達(dá)式來匹配數(shù)字,可能會散布-s:


const getDateObj = value => {

  const match = value.match(/(^\d+)(?:-(\d+)(?:-(\d+))?)?$/);

  if (!match) return undefined;

  const [, first, second, third] = match.filter(group => group !== undefined).map(Number);

  if (third) {

    // All were matched

    return {

      year: third,

      month: second,

      day: first

    };

  } else if (second) {

    // Only first two were matched

    return {

      year: second,

      month: first

    }

  }

  return {

    year: first

  }

};


console.log(getDateObj('31-12-2000'));

console.log(getDateObj('12-2000'));

console.log(getDateObj('2000'));

console.log(getDateObj('incorrect'));

在 TypeScript 語法中:


type NgbDateStruct = {

    year: number;

    month?: number;

    day?: number;

};

const getDateObj = (value: string): NgbDateStruct | undefined => {

    const match = value.match(/(^\d+)(?:-(\d+)(?:-(\d+))?)?$/);

    if (!match) return undefined;

    const [, first, second, third] = match.filter(group => group !== undefined).map(Number);

    if (third) {

        // All were matched

        return {

            year: third,

            month: second,

            day: first,

        };

    }

    if (second) {

        // Only first two were matched

        return {

            year: second,

            month: first,

        };

    }

    return {

        year: first,

    };

};


查看完整回答
反對 回復(fù) 2023-07-20
  • 2 回答
  • 0 關(guān)注
  • 181 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號