首页 > 解决方案 > 如果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.exampleNoorparams.checkItem为空或未定义。如果它不为空,添加要查询的值的干净写入方式是什么?例如,如果params.checkItem为 null,我的查询应如下所示:

       var queryData = {
          "patient_id": params.exampleNo,
          "hospital_name": params.hospitalName,
          "report_date": params.reportDate
        };

当它为空时,忽略它。如果这样写:

if(value){
   var queryData ={
   }
}

这是丑陋的。

标签: javascript

解决方案


您可以在函数顶部有一个从函数 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是否为假(nullundefinedNaN、空字符串(""false0),那么您可以执行以下操作:

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"
// }


推荐阅读