首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >忽略GET请求中未定义的属性(带有类型记录的角)

忽略GET请求中未定义的属性(带有类型记录的角)
EN

Stack Overflow用户
提问于 2018-09-27 00:22:42
回答 2查看 1.5K关注 0票数 4

我正试着从服务器上请求一些数据。当我将属性的模型更改为未定义时,这个“未定义”字符串将在查询字符串中发送。

代码语言:javascript
运行
复制
let filterModel = new GroupFilterModel();
filterModel.status = anycondition ? "opened" : undefined;
this.http.get<GroupModel[]>("apiurl", { params: filterModel });

发送的查询字符串如下所示:

代码语言:javascript
运行
复制
apiurl?status=undefined

我想避免发送状态变量。我怎么能有这种行为?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-09-27 00:35:22

在ES6中使用这个衬垫:

代码语言:javascript
运行
复制
Object.keys(obj).forEach(key => obj[key] === undefined ? delete obj[key] : '');

好像:

代码语言:javascript
运行
复制
filterModel.status = anycondition ? "opened" : undefined;
const model = Object.keys(filterModel).forEach(key => obj[key] === undefined ? delete obj[key] : '');
this.http.get<GroupModel[]>("apiurl", { params: model });

您还可以更进一步,将其作为对象的扩展:

代码语言:javascript
运行
复制
Object.prototype.StripUndefined = function StripUndefined() {
  return this.keys(filterModel).forEach(key => obj[key] === undefined ? delete obj[key] : '');
};
票数 3
EN

Stack Overflow用户

发布于 2018-09-27 00:28:41

您可以使用存档删除具有未定义值和空值的属性,如下所示:

代码语言:javascript
运行
复制
let filterModel = new GroupFilterModel();
filterModel.status = anycondition ? "opened" : undefined;
this.http.get<GroupModel[]>("apiurl", { params: _.pickBy(filterModel) });

有关使用香草JS的其他解决方案,请参见:

Remove blank attributes from an Object in Javascript

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52527698

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档