我有一个像这样的对象,其中包含带有空格的字符串名称:
{
xxx: "/xxx/",
name: "string with spaces",
items: {
method: "GET",
}
}
我在请求查询中搜索名称,以获取名称的item对象,例如:
http://localhost:3000?$name=test
但是我现在应该如何搜索具有这样的空格的字符串:
http://localhost:3000?$name=string with spaces
这是事物运作的过程:
如果我在查询中未指定像http://localhost:3000?$name=
这样的名称,则会得到以下信息:
[
{
name: "admin",
item: [xxx]
},
{
name: "auth",
item: [xxx]
}
]
例如,如果我这样指定名称为admin
的对象:http://localhost:3000?$name=admin
,那么我将得到以下内容:
[
{
name: "manage users",
items: {}
},
{
name: "Get user`",
items: {}
}
]
现在我要做的是在查询中添加带有如下空格的名称:http://localhost:3000?$name=admin/manage users
,以便我也可以检索其项。
当我尝试以下代码时:
const { $name } = req.query;
const name = $name.split('/');
let currentItem = req.doc;
name.forEach((name) => {
const decoded = decodeURIComponent(name);
currentItem.forEach((entry) => {
if (entry.name === decoded) {
currentItem = entry.item;
}
});
});
如果没有空格,则一切正常,但是一旦我搜索带有空格的内容,然后i get undefined for the entry.item
,但一旦我在控制台上登录条目,然后输入的名称就会被解码。
答案 0 :(得分:2)
它将进行URI编码-使用decodeURIComponent
即可获得所需的内容:
const encoded = encodeURIComponent("string with spaces");
const decoded = decodeURIComponent(encoded);
console.log(encoded);
console.log(decoded);
.as-console-wrapper { max-height: 100% !important; top: auto; }