js判断对象中的参数是否为空

JavaScript判断对象中的参数是否为空

需求:当全部参数为空时调用A接口,其中只要有一个参数有值,有内容就掉B接口

列如:我现在只想判断除了args.search.auditStatusBillNo这个不为空之外,其它全部返回为空,则通过验证,返回true;否则只要有一个不为空,就返回false,验证不通过

object

有两张写法,原生js和vue中的写法

1.原生js写法

写法一

function validateArgs(args) {
  for (let key in args.search) { // 遍历args.search中的所有属性
    if (key !== "auditStatusBillNo" && args.search[key] !== "") {
      return false;
    }
  }
  return true;
}

let args = { /* args数据省略 */ }; // 数据我放到下面
let isValid = validateArgs(args);
console.log(isValid); // 输出true

写法二

function validateArgs(args) {
  const keys = Object.keys(args.search);
  let flag = true;
  for (let i = 0; i < keys.length; i++) {
    if (keys[i] !== 'auditStatusBillNo' && args.search[keys[i]] !== '') {
      flag = false;
      break;
    }
  }
  return flag && args.search.auditStatusBillNo !== '' && args.search.billNo !== '';
}

args数据

args: {
  search: {
    billNo: '', // 账单编号
    shippingCompanyId: '', // 物流公司ID  Long
    shippingCompanyName: '', // 物流公司名称
    shippingmethodId: '', // 物流方式ID
    shippingmethodName: '', // 物流方式名称
    orderNo: '', // 订单号
    trackingOrderNo: '', // 跟踪单号
    apvNo: '', // 发货单号
    freightDifference: '', // 运费差异额
    freightDifferenceRatio: '', // 运费差异比例
    weightDifferenceValue: '', // 重量差异值
    weightDifferenceRatio: '', // 重量差异比例
    belongMonth: '', // 账单所属月份
    startBelongData: '', // 账单所属开始月份
    endBelongData: '', // 账单所属结束月份
    startImportDate: '', // 开始导入时间
    endImportDate: '', // 结束导入时间
    startDeliveryDate: '', // 开始发货时间
    endDeliveryDate: '', // 结束发货时间
    ifSupplementRetreat: '', // 是否补退, 1:是;2:否
    noVotesDifference: '', // 是否满足规则, 1:是;0:否
    auditStatus: '', // 审核状态,待审核、已审核、可汇款、已汇款
    noCompletion: '', // 查询未补全数据 1.未补全
    auditStatusBillNo: '待审核' // 查询待审核、已审核、可汇款、已汇款状态
  },
  pageReqired: true,
  limit: 20,
  offset: 0
}

2.vue中的写法

// 把函数单独提出来
validateArgs(args) { // 除了auditStatusBillNo之外的属性值不为空,则返回false,否则返回true
   for(let key in args.search) { // 遍历args.search中的所有属性
     if (key !== 'auditStatusBillNo' && args.search[key] !== '') {
       return false
     }
   }
   return true
 },
 getList1(type = '1') { // type = 1是带条件查询;2是初始化查询
   this.tableLoading = true
   this.totalNoVotes = 0
   // 数据处理
   let temp = this.$cloneDeep(this.args)
   temp.search.shippingmethodName = this.seekLabelList(temp.search.shippingmethodId, this.getshippingmethods)
   temp.search[`start${this.tempSearch.tempsTypeVal}Date`] = this.tempSearch.startTime // 开始时间
   temp.search[`end${this.tempSearch.tempsTypeVal}Date`] = this.tempSearch.endTime // 结束时间
   let searchTemp = this.$cloneDeep(temp)
   // console.log(searchTemp, '查询11 数据处理')
   let isValid = this.validateArgs(temp) // 参数是否全部为初始值
   this.sonDadArgs = searchTemp.search
   let temp2 = {
     search: {
       auditStatusBillNo: this.args.search.auditStatusBillNo // 状态
     },
     pageReqired: true,
     limit: 20,
     offset: 0
   }
   // 下面这块是接口,采用A接口还是B接口
   ;((type === '1' && !isValid) ? arcelreconciliation(searchTemp) : searchInitialArcelreconciliation(temp2)).then(res => {
     if (res.data.success) {
       this.tableData = (res.data && res.data.rows) || []
       this.total = (res.data && res.data.total) || 0
       this.totalNoVotes = res.data.rows.reduce((index, item) => index + parseInt(item.totalNoVotes), 0)
     } else {
       this.$Message.error({ content: res.data.errorMsg || '小包列表查询失败!', duration: 4 })
     }
   }).catch(err => {
     console.log(err)
   }).finally(() => {
     this.ids = this.$cloneDeep(this.$options.data().ids) // 初始化表格选中
     this.tableLoading = false
   })
 }
 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值