javascript - 如果javascript中的值不为null,如何添加到查询参数
问题描述
我添加这样的查询字符串:
reportQuery: function (params) {
var that = this;
var queryData = {
"patient_id": params.exampleNo,
"hospital_name": params.hospitalName,
"item_name": params.checkItem,
"report_date": params.reportDate
};
API.executeGet(queryData, function (res) {
if (res.data.Data && res.data.Data.length > 0) {
that.setData({
reportList: res.data.Data,
containsData: true
});
}
}, '/api/Analysis/Search', 'post');
}
但有时params.exampleNo
orparams.checkItem
为空或未定义。如果它不为空,添加要查询的值的干净写入方式是什么?例如,如果params.checkItem
为 null,我的查询应如下所示:
var queryData = {
"patient_id": params.exampleNo,
"hospital_name": params.hospitalName,
"report_date": params.reportDate
};
当它为空时,忽略它。如果这样写:
if(value){
var queryData ={
}
}
这是丑陋的。
解决方案
您可以在函数顶部有一个从函数 if 返回的保护子句params === null
,例如:
function(params) {
if (params === null) return;
var that = this;
var queryData = {
"patient_id": params.exampleNo,
"hospital_name": params.hospitalName,
"item_name": params.checkItem,
"report_date": params.reportDate
};
API.executeGet(queryData, function(res) {
if (res.data.Data && res.data.Data.length > 0) {
that.setData({
reportList: res.data.Data,
containsData: true
});
}
}, '/api/Analysis/Search', 'post');
}
如果您想检查某个值params
是否为假(null
、undefined
、NaN
、空字符串(""
)false
或0
),那么您可以执行以下操作:
params = {
exampleNo: 42,
hospitalName: 'Gotham General Hospital',
checkItem: null,
reportDate: "01/01/1970",
};
let map = {
exampleNo: "patient_id",
hospitalName: "hospital_name",
checkItem: "item_name",
reportDate: "report_date",
};
let query = Object.entries(params).reduce((p, [k, v]) => {
if (v) p[map[k]] = v;
return p;
}, {});
console.log(query);
// {
// "patient_id": 42,
// "hospital_name": "Gotham General Hospital",
// "report_date": "01/01/1970"
// }
推荐阅读
- django - 如何使用 django 在后台任务中设置重复间隔时间?
- c# - HttpClient 超时/取消异常
- go - time.Sub() 返回 1 秒,尽管差异超过了几年
- c# - 如何在 C# 中获取 json 属性的特定部分?
- flutter - 在 Flutter 中运行定期后台代码
- javascript - Firebase 初始化应用丢失当前用户
- windows - 如何在 Xampp windows 10 中创建虚拟主机
- python - 模型常量在数据迁移中不可用?
- r - R中是否有设置在加载数据时自动转换数据框中的相同列名?
- linux - 构建后无法将 Vue CLI 应用程序推送到 github.io - 权限被拒绝(公钥)