Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/403.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 如何向JS spread操作符添加属性?_Javascript_Arrays_Ecmascript 6 - Fatal编程技术网

Javascript 如何向JS spread操作符添加属性?

Javascript 如何向JS spread操作符添加属性?,javascript,arrays,ecmascript-6,Javascript,Arrays,Ecmascript 6,下面我将patientId和inusranceId添加到spread操作符,只是想看看是否有更好的方法来完成此任务 main.js const Response = await getData(re); const patientId = "AW364747"; const insuranceId = "0000786622"; logger().info('Response=', { ...Response, drugName: '[REDACTED]' , patientId, insu

下面我将patientId和inusranceId添加到spread操作符,只是想看看是否有更好的方法来完成此任务

main.js

const Response = await getData(re);
const patientId = "AW364747";
const insuranceId = "0000786622";


logger().info('Response=', { ...Response, drugName: '[REDACTED]' , patientId, insuranceId});

你所说的是对的

let newResponse = {...Response, drugName: '[REDACTED]'}
如果响应中缺少drugName属性,则将添加该属性。或者,如果响应,它将重写drugName属性

let newResponse = { drugName: 'defaultname', ...Response}
将执行相反的操作,如果响应包含drugName,它将覆盖drugName:“defualtname”,或者如果响应中不存在它,它将添加drugName

示例:

const Response = { prop: 'some prop', drugName: 'Original Drug'}

const spreadFirst = { ...Response, drugName: 'New drug'}
// spreadFirst = { prop: 'some prop', drugName: 'New drug'}

const spreadLast = { drugName: 'Newest Drug', ...Response}
// spreadLast = { prop: 'some prop', drugName: 'Original Drug'}

有更明确和直接的方法

let Response={name:'John'};//等待获取数据(re);
Response.drugName='[redact]';
Response.patientId='AW364747';
Response.insuranceId='0000786622';

console.log(Response)
此解决方案有什么不好之处?@NineBerry我希望patientId和inusranceId成为响应的一部分。如果要向
响应添加属性,可以像
Response.patientId=…
那样操作。另一种方法是使用,例如:
Object.assign(Response,{dugName:'[redact]',…})
这个问题特别要求使用扩展运算符。这也改变了可能不可取的反应。像“扩散算子”这样的东西不存在——存在,我们不能给它添加任何东西。OP不提突变是不可接受的扩展语法使用(…)运算符任何一种方式它的语义和问题明确要求扩展语法/运算符。我看不出在上述两种方法中有任何区别输出将是相同的权利我的问题是,如果我们添加任何属性,它会在响应中添加与其他属性(如drugName)相同级别的新属性吗object@hussain所以,首先,如果先传播,接下来的任何东西都将取代相应的属性。若价差在最后,那个么反应将取代之前的价差。drugName将与响应中的所有属性处于同一级别。就像你只是简单地回答一样。drugname=“drugname”