JavaScript >> Javascript 文檔 >  >> Tags >> object

如何在 JavaScript 中將所有查詢字符串參數作為對象獲取

在 JavaScript 中,您可以使用 URLSearchParams 將查詢字符串轉換為對象的接口。它提供了處理 URL 查詢字符串的實用方法。

  1. 將查詢字符串傳遞給URLSearchParams 構造函數將其轉換為對象實例。
  2. 使用 get() 訪問查詢字符串參數的方法。
  3. 要獲取原生 JavaScript 對象,請將對象實例傳遞給 Object.fromEntries() 方法。
const qs = `?size=M&price=29&sort=desc`

const params = new URLSearchParams(qs)

console.log(params.get('size')) // M
console.log(params.get('price')) // 29
console.log(params.get('sort')) // desc

// Convert to native JS object
const obj = Object.fromEntries(params)
console.log(obj)
// { size: 'M', price: '29', sort: 'desc' }

在網絡瀏覽器中,只需傳遞 window.location.searchURLSearchParams 將查詢字符串轉換為對象的構造函數:

const params = new URLSearchParams(window.location.search)

如果你有一個完整的 URL,創建一個新的 URL 對象來檢索查詢字符串,然後將它傳遞給 URLSearchParams 構造函數:

const url = new URL('http://example.com?size=M&price=29&sort=desc')

const params = new URLSearchParams(url.search)

Object.fromEntries() 只要沒有重複的查詢字符串參數,函數就可以正常工作。如果你有類似 ?size=M&size=XL , 你只會得到 { size: 'XL' } .

要處理重複的查詢字符串參數,請改用以下方法:

const qs = `?size=M&size=XL&price=29&sort=desc`

const params = new URLSearchParams(qs)

const obj = {}
for (const key of params.keys()) {
  if (params.getAll(key).length > 1) {
    obj[key] = params.getAll(key)
  } else {
    obj[key] = params.get(key)
  }
}

console.log(obj)
// { size: [ 'M', 'XL' ], price: '29', sort: 'desc' }

閱讀本文,了解如何在 JavaScript 中將對象轉換為查詢字符串。


Tutorial JavaScript 教程
  1. 適用於 Node.js 的 Application Insights SDK 第 3 部分:應用程序映射

  2. 在 Svelte 中預加載圖像

  3. Angular:我如何破壞 ngOnInit

  4. 有沒有比 setTimeout 更準確的方法來創建 Javascript 計時器?

  5. 在 React 項目中通過 CDN 使用 Leaflet 創建地圖

  6. 需要節點——第 39 卷

  7. 如何自動調整tinyMCE的大小?

  1. 使用 Netlify 表單和 Fauna 構建 Jamstack 訂閱表單 - 第 2 部分

  2. JavaScript:數據結構(第 2 部分 - 集)

  3. Pipeline API 🔥 - 處理沒人告訴你的流錯誤的最佳方法

  4. 如何使用javascript在第9次出現字符後獲取文本?

  5. 初步了解 Vue 3 組合 API

  6. 確定一個詞是否是保留的 Javascript 標識符

  7. 選擇組件 Ant Design 4.0 vs 3.0

  1. 重新混合共享佈局,第一眼

  2. 使用 Azure 容器註冊表提高映像的安全性

  3. 📚 學習 WebRTC 為 Twilio hackathon 進行瀏覽器調用

  4. 在哪裡上傳文件🗄通過鏈接使用它們🔗(JS,CSS,字體,圖像)