如何在JavaScript中创建字符串查询?

时间:2019-05-16 13:56:23

标签: javascript arrays

我遇到了一项家庭作业问题,以便能够基于数组中的某些参数创建查询字符串?我对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

2 个答案:

答案 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进行以下操作:

  • 映射[人,值]对Person。
  • 通过最终处理数据,将其值转换为单个字符串。
  • 加入它们以返回最后的字符串。

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);