向对象Javascript添加条件参数
下面是我的代码,在其中,我试图将向对象Javascript添加条件参数,javascript,reactjs,object,ecmascript-6,destructuring,Javascript,Reactjs,Object,Ecmascript 6,Destructuring,下面是我的代码,在其中,我试图将passStatus添加到一个对象中,除非该对象有一个值,否则忽略它 我试过这个- 但看起来我做错了。请给我指点 代码- var a = { firstName: "Tom", lastName: "Simmon", email: "tomsimmon@gail.com", phone: "+36456", passStatus: "", query: "simple" }; // var newObj = Object.assign(a
passStatus
添加到一个对象中,除非该对象有一个值,否则忽略它
我试过这个-
但看起来我做错了。请给我指点
代码-
var a = {
firstName: "Tom",
lastName: "Simmon",
email: "tomsimmon@gail.com",
phone: "+36456",
passStatus: "",
query: "simple"
};
// var newObj = Object.assign(a, a.passStatus ? {a.passStatus} : null);
var newObj = {
...(a.passStatus? {passStatus: a.passStatus}: {} )
}
console.log(newObj); // {} <- Getting a blank object
If passStatus = ""
{
firstName: "Tom",
lastName: "Simmon",
email: "tomsimmon@gail.com",
phone: "+36456",
query: "simple"
}
If passStatus = "pass"
{
firstName: "Tom",
lastName: "Simmon",
email: "tomsimmon@gail.com",
phone: "+36456",
passStatus: "pass",
query: "simple"
}
我认为有条件地从对象中删除属性的最清晰的方法是使用rest语法,后跟一个可能的
对象。assign
:
var a={
名字:“汤姆”,
姓:“西蒙”,
电子邮件:“tomsimmon@gail.com",
电话:“+36456”,
密码状态:“”,
查询:“简单”
};
const{passStatus,…newObj}=a;
if(passStatus){
赋值(newObj,{passStatus});
}
console.log(newObj)代码>对对象(a
)进行分解以删除该值,然后使用对象扩展来添加该值,如果它是真实的:
var a={
名字:“汤姆”,
姓:“西蒙”,
电子邮件:“tomsimmon@gail.com",
电话:“+36456”,
查询:“简单”
};
常数{passStatus,…obj}=a;
常数newObj={
…obj,
…(passStatus&&{passStatus})
};
console.log(newObj)代码>浅复制整个对象,如果新对象具有错误的passStatus
值,请删除该属性
const a={
名字:“汤姆”,
姓:“西蒙”,
电子邮件:“tomsimmon@gail.com",
电话:“+36456”,
密码状态:“”,
查询:“简单”
};
常数b={
名字:“汤姆”,
姓:“西蒙”,
电子邮件:“tomsimmon@gail.com",
电话:“+36456”,
passStatus:“测试”,
查询:“简单”
};
const copyKeepOrRemovePassStatus=obj=>{
const newObj={…obj};
如果(!newObj.passStatus){
删除newObj.passStatus;
}
返回newObj;
};
log(copyKeepOrRemovePassStatus(a));
log(copyKeepOrRemovePassStatus(b))代码>下划线指的是什么?在-[a.passStatus?'''passStatus']中:。你能解释一下吗?这很有趣,也很独特。[]
方括号表示计算出的属性名称。例如['foo'+'1']
将分解属性foo1
。:
后面的标识符是存储解构属性的变量名。在这里,我们不关心变量,我们只想删除它,这样它就不会包含在…newObj
rest语法中。您可以将其命名为任何您想要的名称,并在以后根据需要将其命名为console.log
的(空)值。但是,\uu
是不使用的变量名的约定。