问题描述在js中构造json的时候如何根据一个值来决定包不包含这个节点?问题出现的环境背景及自己尝试过哪些方法当然可以用很多if来搞,比如letreq={};if(this.timeSelect.start!=''){req.startTs=this.timeSelect.start;}if(this.timeSelect.end!=''){req.endTs=this.timeSelect.end;}if(this.userId!=''){req.userId=this.userId;}if(this.auditType!='1'){req.checkType=this.auditType;}if(this.opter!=''){req.operator=this.opter;}if(this.auditStatus!='0'){req.result=this.auditStatus;}你期待的结果是什么?实际看到的错误信息又是什么?大神们有什么好的简约的办法么?
2 回答
幕布斯7119047
TA贡献1794条经验 获得超8个赞
/****@param{Object}sources传入一个源数据Obj*@param{Array}rule传入一个规则数组*@param{Array}key传入需要判断的key(sources的属性)*key要和rule对应*/functionassigment(sources,rule,key){vartarget={}for(leti=0;iif(rule[i]){ target[key[i]]=sources[key[i]]}}returntarget}varsources={a:1,b:'',c:'0'}varrule=[sources.a!='',sources.b!='',sources.c!='0',]varkey=['a','b','c'];vartarget=assigment(sources,rule,key)console.log(target)
人到中年有点甜
TA贡献1895条经验 获得超7个赞
你这key值都不对应,估计没对接好吧,只能自己映射了,不过为了优雅和减少代码量,可以简单封装一下:/***k:req要挂载的key*p:源key*c:上下文取值*v:不期望的值**/functionsetVal({k,p,c,v=''}){const_v=c[p]if(_v!=v)req[k]=_v}vararr=[{k:startTs,p:start,c:this.timeSelect},{k:endTs,p:end,c:this.timeSelect},{k:userId,p:userId,c:this},{k:checkType,p:auditType,c:this,v:'1'}]arr.forEach(item=>setVal(item))
添加回答
举报
0/150
提交
取消