我遇到了一项家庭作业问题,以便能够基于数组中的某些参数创建查询字符串?我对javascript还是很陌生,因此已经取得了一些成功,但是如果有人可以检查我的代码,将不胜感激。谢谢大家。
我正在使用forEach遍历数组以获取值,并使用字符串串联获取一些url。我为此制作了一个示例代码笔。
https://codepen.io/anon/pen/pmRXzg
let Person = {
name: ['Sam', 'Daisy'],
food: ['banana', 'Apple']
}
let handler = Object.entries(Person)
handler.forEach(function(element) {
console.log(element)
})
let myUrl = Object.entries(handler).map(key => key + '=' +
handler[key]).join('&')
let visitUrl = "http://someURLString/?" + myUrl
console.log(myUrl)
console.log(visitUrl)
如何获得最终结果?
someUrlString/?name=Sam,Daisy&food=banana,apple
答案 0 :(得分:3)
您可以在map()
上使用Object.entries()
,然后通过join()
使用=
项,然后通过&
使用连接结果
let Person = {
name: ['Sam','Daisy'],
food: ['banana','Apple']
}
let res = Object.entries(Person).map(x=> x.join('=')).join('&');
console.log(res)
Object.entiries()
返回一个数组数组。每个数组包含键值对。在这种情况下,条目将为[['name', ['Sam','Daisy']], ['food', ['banana','Apple']]]
。
现在,我们在数组上使用map()
。 map()
是一个回调。回调第一个参数(在上述情况下,其x
)是我们要迭代的数组的当前元素。 map()
根据回调返回的值创建相同长度的新数组。在上述情况下,返回的值为x.join('=')
join()
是通过将给定的子字符串b / w每个添加到字符串将数组转换为字符串的方法。因此,在
join()
[food , ['banana','Apple']].join('=')
它将变为
"food=banana,Apple"
数组['banana','Apple']
被隐式转换为字符串。所以['banana','Apple']
是banana,Apple
在最后一部分中,我们得到数组["name=Sam,Daisy","food=banana,Apple"]
,并通过join()
&
对其进行数组。
重点是当我们将数组转换为字符串时。它返回一个字符串,其中所有元素都用,
答案 1 :(得分:2)
您可以利用.entries
,.map
和.join
进行以下操作:
let Person = {
name: ['Sam', 'Daisy'],
food: ['banana', 'Apple']
}
const res = Object.entries(Person).map(([entryName, entryValues]) => {
return `${entryName}=${entryValues.map(i => i.toLowerCase()).join(',')}`;
}).join('&');
const url = `someUrlString/?${res}`;
console.log(url);