Альтернативный подход заключается в следующем:
let userInfo = {
userid: userInfo.userid,
pid: userInfo.pid,
usernameType: userInfo.usernameType,
...getCookieValue('JetPrivilege_CCounter_C', 'userAcceptedCookie') && {
cookieAccept: 'Y',
cookieDateTime: getCookieValue('JetPrivilege_CCounter_C', 'ad'),
sessionID: JSESSIONID,
cookieAcceptedProperty: getCookieValue('JetPrivilege_CCounter_C', 'as'),
sessionDateTime: JSESSIONTIME
},
...!getCookieValue('JetPrivilege_CCounter_C', 'userAcceptedCookie') && {
cookieAccept: 'N'
},
activeStatus: userInfo.activeStatus,
age: userInfo.age,
gender: userInfo.gender
}
Это связано с тем, что оператор распространения для литералов объекта ничего не делает, если его операнд является объектом без перечисляемых собственных свойств [ См. ]
Вы можете протестировать упрощенную версию здесь:
let userInfo = {
userid: 1,
...false && {
cookieAccept: 'Y',
cookieDateTime: 1,
sessionID: 1,
cookieAcceptedProperty: 1,
sessionDateTime: 1
},
...true && {
cookieAccept: 'N'
},
activeStatus: 2,
age: 2,
gender: 2
}
console.log(userInfo)