![](/img/trans.png)
[英]how to construct a json object using info from several javascript arrays
[英]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.entries
、 Array#map
和Array#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.