【发布时间】:2017-04-11 08:10:03
【问题描述】:
我有一个包含多个字段的搜索表单。如果用户在字段中没有输入任何内容,它仍然会被发送到值为“null”的服务器。
但是,此表单中大约有 25 个可选(高级)字段,如果用户没有在其中输入任何内容,则 JSON 根本不应该包含此字段。
所以,我的问题是:有什么方法(也许是模式)可以避免那些 25 个“if () else”吗?形成最终 JSON 的最佳方式是什么?
谢谢!
更新: 谢谢@RIYAJKHAN 的回答! 我已经使用 LoDash 自己解决了这个问题:
private compactObject(obj) {
let compactObj = this.removeEmptyProperties(_.cloneDeep(obj));
_.forEach(compactObj, (value, key) => {
if (_.isObject(value)) {
compactObj[key] = this.compactObject(this.removeEmptyProperties(compactObj[key]));
}
});
return this.removeEmptyProperties(compactObj);
};
private removeEmptyProperties(obj) {
let trimedObj = _.cloneDeep(obj);
_.forEach(trimedObj, (value, key) => {
if (!value || _.isEmpty(trimedObj[key])) {
delete trimedObj[key];
}
});
return trimedObj;
}
【问题讨论】:
-
将它们作为 null 发送到服务器有什么问题?
标签: javascript angularjs json forms typescript