簡體   English   中英

如何使用鍵和值從對象構造查詢 - Javascript

[英]how to construct a query from an object using keys and values - Javascript

我想將包含鍵和值的對象轉換為查詢字符串,例如:

obj1: {
  abc: "Abc",
  id: 1,
  address: "something"
}.

但是這個對象是動態創建的,因此其中的數字和鍵可能會有所不同,就像另一個動態對象一樣;

obj1: {
  test: "123",
  test2: "3333"
}

無論服務器返回什么對象,我都需要將其轉換為 query/ 字符串; 喜歡

query1 = "test:'123'and test2: '3333'"
query2 = "abc:'Abc' and id: 1 and address: 'something'"

我可以簡單地嘗試:

Object.keys(obj1)[0]
Object.keys(obj1)[1]
Object.keys(obj1)[2]

並獲取密鑰並使用:

Object.keys(obj1)[0]: obj1[Object.keys(obj1)[0]]

這會給我:

abc:'Abc'

但是,由於對象中鍵的長度不是靜態的,而且鍵也不是靜態的,我發現很難知道如何將這些值連接成一個字符串,有什么想法嗎?

您的格式存在一些輕微的不一致,但如果不考慮這些,您可以使用Object.entriesArray#mapArray#join ,如下所示:

 const objToQuery = o => Object.entries(o).map(([k, v]) => `${k}: ` + (typeof v === "number" ? v : `'${v}'`) ).join(" and ") ; const obj1 = { abc: "Abc", id: 1, address: "something" }; const obj2 = { test: "123", test2: "3333" }; console.log(objToQuery(obj1)); console.log(objToQuery(obj2));

只是在這里有點創意並使用內置的URLSearchParams()然后替換=& 不確定您的報價有多重要,因為如果需要,其他解決方案會更有效

 const obj1 = { abc: "Abc", id: 1, address: "something" } const objToQuery = o => { return (new URLSearchParams(Object.entries(o))) .toString().replace(/=/g, ': ').replace(/&/g, ' and ') } console.log(objToQuery(obj1))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM