为了账号安全,请及时绑定邮箱和手机立即绑定

在js中构造json问题

在js中构造json问题

蝴蝶刀刀 2019-05-12 14:13:30
问题描述在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)
                            
查看完整回答
反对 回复 2019-05-12
?
人到中年有点甜

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))
                            
查看完整回答
反对 回复 2019-05-12
  • 2 回答
  • 0 关注
  • 431 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信