Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/413.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_Object_Ecmascript 6 - Fatal编程技术网

在JavaScript中有条件地添加对象属性

在JavaScript中有条件地添加对象属性,javascript,object,ecmascript-6,Javascript,Object,Ecmascript 6,如果名称为空,如何将其排除在参数中?如果我把{id,name}放进去,这个方法不是仍然有一个name未定义的属性吗 我不要这个 axios.post('saveUser', {id, name}) 我想要这个常量obj={id:123} 但我不想创建这样的临时变量 const obj = {id: 123, name: undefined} 可以先创建id为的对象,然后添加名称: let obj = { id: id }; if(name) obj = { ...obj, name };

如果名称为空,如何将其排除在参数中?如果我把{id,name}放进去,这个方法不是仍然有一个name未定义的属性吗

我不要这个

axios.post('saveUser', {id, name})
我想要这个常量obj={id:123}

但我不想创建这样的临时变量

const obj = {id: 123, name: undefined}

可以先创建id为的对象,然后添加名称:

let obj = { id: id }; if(name) obj = { ...obj, name };

可以先创建id为的对象,然后添加名称:

let obj = { id: id }; if(name) obj = { ...obj, name };

我建议您使用ES6语法有条件地添加对象属性,如下所示

常量normalizeData={id,name=}=>{ 常量条件=!!name;//等效于:name!==未定义&&name!==; 返回{id,…条件&&{name}; } console.lognormalizeData{id:123,name:}; lognormalizeData{id:123,name:undefined};
console.lognormalizeData{id:123,姓名:Phong_Nguyen} 我建议您使用ES6语法有条件地添加对象属性,如下所示

常量normalizeData={id,name=}=>{ 常量条件=!!name;//等效于:name!==未定义&&name!==; 返回{id,…条件&&{name}; } console.lognormalizeData{id:123,name:}; lognormalizeData{id:123,name:undefined};
console.lognormalizeData{id:123,姓名:Phong_Nguyen};我不想创建临时变量,为什么?这有什么问题?@VLAZ我想避免可变对象,如果possiblelet与可变对象无关,就避免let。这是一个可变变量。您可以执行const obj={id};如果名称obj[name]=名称;变量是不可变的。对象不是。此外,这是一个非常奇怪的要求。您可以在创建时确定是否拥有属性,但通常不值得这样做。如果您现在正在创建对象,那么您是否对其进行可变处理并不重要-假设您在函数中执行此操作,这仍然是一个纯粹的操作。如果您的服务器无法处理id或名称中不可预测的数据,那么除了多余的属性之外,您还有其他问题。好的,我只是不想要临时变量,看看是否有更好的方法来处理这种情况。我不想创建临时变量,为什么?这有什么问题?@VLAZ我想避免可变对象,如果possiblelet与可变对象无关,就避免let。这是一个可变变量。您可以执行const obj={id};如果名称obj[name]=名称;变量是不可变的。对象不是。此外,这是一个非常奇怪的要求。您可以在创建时确定是否拥有属性,但通常不值得这样做。如果您现在正在创建对象,那么您是否对其进行可变处理并不重要-假设您在函数中执行此操作,这仍然是一个纯操作。如果您的服务器无法处理id或名称中不可预测的数据,则除了多余的属性外,您还有其他问题。好的,我不需要临时变量,看看是否有更好的方法来处理此情况。您能更改第一个情况,使其声明一个未定义的名称:console.lognormalizeData吗{id:123,name:undefined};?我刚刚更新了,请看一下@chrwahl。请告诉我它是否有效。这就是@Nguyễn-Văn-Phongnice。答案实际上是在这一行{id,{name&&{name}};对吗?末尾有double;的打字错误。@NguyễnVănPhong这真是天才!这比创建一个临时变量要好得多!你能改变第一个大小写,让它声明一个未定义的名称:console.lognormalizeData{id:123,name:undefined};?我刚刚更新了,请看看它@chrwahl。请告诉我它是否有效。这就是@Nguyễn-Văn-Phongnice。答案实际上是在这一行{id,{name&&{name}};对吗?末尾有double;的打字错误。@NguyễnVănPhong这是天才!这比创建临时变量要好得多!