亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

如何在沒有正則表達式的情況下安全地區分在 queryParams

如何在沒有正則表達式的情況下安全地區分在 queryParams

HUH函數 2021-06-30 08:11:34
例如,我在 url als 查詢參數中存儲了一個日期和金額屬性...?日期=2019-06-12T06:20:39.465Z&amount=20000我希望能夠解析所有查詢參數并使用 javascript 將它們分配給正確的類型。目前我正在使用        paramMap.keys.forEach(key => {            let value: any = paramMap.get(key);            if (isFinite(Date.parse(value))) {                // keep as string            } else if (isFinite(parseInt(value, 10))) {                value = isInteger(value) ? parseInt(value, 10) : parseFloat(value);            } else if (value === 'true' || value === 'false') {                value = value === 'true';            }            obj[key] = value;        });        return obj;在這種情況下,amount=20000 將被 Date.parse 識別。還2019-06-12T06:20:39.465Z 將使用 parseInt 解析為 2019 ...isFinie、parseInt 和 isInteger 是從 lodash 導入的。如果可能,我不想使用正則表達式。編輯:請假設我不知道密鑰的名稱。因此腳本應該適用于所有屬性。
查看完整描述

2 回答

?
繁星coding

TA貢獻1797條經驗 獲得超4個贊

使用+operator、Number函數或 lodash_.toNumber()將返回NaN帶有混合數字的字符串:


console.log(+'2019-06-12T06:20:39.465Z')


console.log(+'20000')

所以邏輯是:


const parseParam = value => {

  let v = +value


  if (!isNaN(v)) return v


  v = Date.parse(value)


  if (!isNaN(v)) return v


  if (value === 'true' || value === 'false') return value === 'true'


  return value

}


console.log(parseParam('2019-06-12T06:20:39.465Z'))

console.log(parseParam('20000'))

console.log(parseParam('false'))

console.log(parseParam('cats'))


查看完整回答
反對 回復 2021-07-01
?
慕容森

TA貢獻1853條經驗 獲得超18個贊

ISO 可能會省略秒或時區或毫秒,但如果您忽略這些并檢查其他所有內容,您可以可靠地檢查不同的 ISO 格式。


console.log(isISO('2019-06-12T06:20:39.234Z'))

console.log(isISO('2019-06-12T06:20:39'))

console.log(isISO('2019-06-12T06:20'))


console.log(isISO("2019-1-1"))

console.log(isISO('2019-06-12T06:20:39+05'))


console.log(isISO('ketchup'))


function isISO(str) {

  try {

    str = str.split('+')[0];

    var iso = new Date(str).toISOString();

    var [date, time] = iso.split('T');

    var [y, m, d] = date.split('-');

    return iso.indexOf(`${y}-${m}-$99i0e0t`) === 0;

  } catch (e) {

    return false;

  }

}


查看完整回答
反對 回復 2021-07-01
  • 2 回答
  • 0 關注
  • 151 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號