如何从区分大小写的查询参数变量中获取值?

2024-04-14

我有一个带有查询字符串的 URLid。但是,变量id可以作为“id”或“id”在网址中。

根据我的理解,这两个将被区别对待。为了处理以下 URL,我编写了如所附屏幕截图中的代码:

http://xxx/abc?id=10 http://xxx/abc?id=10

http://xxx/abc?id=10 http://xxx/abc?Id=10

在此输入图像描述 https://i.stack.imgur.com/LOQgd.jpg

除此之外,是否有任何简单的方法来处理区分大小写的变量并在 angular4 中正确获取值?


正如@vogomatix 所说,您不应该使用不同名称的相同参数。但是,无论出于何种原因,您都可以像这样简化代码:

private findQueryParams() {
    this._route.queryParams.subscribe((params: Params) => {
        const idValue = params['id'] || params['Id'] || '0';
        let id = Number(idValue);
    });
}

这样你就可以使用的值id,如果不存在,则Id,如果也不存在,那么您将使用'0'

如果可以有更多组合,正如您所说,那么您最好的选择是将参数克隆为小写版本:

function toLower(params: Params): Params {
    const lowerParams: Params = {};
    for (const key in params) {
        lowerParams[key.toLowerCase()] = params[key];
    }

    return lowerParams;
}

有了这个:

private findQueryParams() {
    this._route.queryParams.subscribe((params: Params) => {
        const _params = toLower(params);
        const idValue = params['id'] || '0';
        let id = Number(params);
    });
}

当然,每次从以下位置获取参数时都必须执行此操作Router,但这是不可避免的,因为基本缺陷在于 Url 系统。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从区分大小写的查询参数变量中获取值? 的相关文章