gpt4 book ai didi

angular - typescript 通过包含特殊字符的键从数组中删除项目

转载 作者:行者123 更新时间:2023-12-04 07:21:23 25 4
gpt4 key购买 nike

我被困在这种情况下。
我有一个带键 tags[$in] 的数组我想通过它在 Angular (Typescript) 中的键删除这个项目。
我有一个代码,我试图通过 delete params?['tags[$in]']; 删除它但这是错误,我不能使用 delete params.tags[$in]由于键名中有特殊字符,我也不能使用 delete params['tags[$in]']因为 params 可能是未定义的;

listSearch<T = Response<any>>(params?: { [key: string]: any }): Observable<T> {
if (params?.search == undefined){
...
}
const paramss = qs.stringify(params, { encode: false });
return this.http.get<T>(`${this.baseURL}/stores?${paramss}`, {
headers: this.http_headers,
withCredentials: true,
responseType: 'json',
});
}
变量 params是:
 $limit: 12
$skip: 0
status: "active"
tags[$in]: (555) ["5dcbdd558b435f0505beeaf9", "5dcbdd558b435f0505beeafa", …]
type: "branch"
__proto__: Object
那么在代码的第 3 行中使用什么来通过它的键来删除这个参数 tags[$in]从数组?

最佳答案

您可以使用 []访问要删除的 key ,并使用 key in obj 检查它是否存在运算符(operator)。

const params = {
'tags[$in]': '123',
'foo': 'bar'
};

console.log('tags[$in]' in params);
console.log(params);

if('tags[$in]' in params) delete params['tags[$in]'];

console.log('tags[$in]' in params);
console.log(params);

编辑: typescript 版本。更多关于 TypeScript 规范的信息: 4.13 Property Access

function getProperty<T, K extends keyof T>(obj: T, key: K) {
return obj[key]; // Inferred type is T[K]
}

function removeProperty<T, K extends keyof T>(obj: T, key: K) {
delete obj[key]; // Inferred type is T[K]
return obj;
}

const params: { [key: string]: any } = {
$limit: 12,
$skip: 0,
status: "active",
"tags[$in]": ["5dcbdd558b435f0505beeaf9", "5dcbdd558b435f0505beeafa"],
type: "branch"
};

const tags = getProperty(params, 'tags[$in]');
console.log(tags); // => ["5dcbdd558b435f0505beeaf9", "5dcbdd558b435f0505beeafa"]

const tagsRemoved = removeProperty(params, 'tags[$in]');
console.log(tagsRemoved); // => { "$limit": 12, "$skip": 0, "status": "active", "type": "branch" }
Link to TS Playground

关于angular - typescript 通过包含特殊字符的键从数组中删除项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68480200/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com