Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/424.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
向对象Javascript添加条件参数_Javascript_Reactjs_Object_Ecmascript 6_Destructuring - Fatal编程技术网

向对象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
是不使用的变量名的约定。