Как создать ключ в объекте JavaScript, используя оператор if else - PullRequest
0 голосов
/ 08 мая 2018

У меня проблемы с созданием нового ключа в объекте с использованием условия if в javascript. Здесь есть объект:

userInfo: {
      userid: userInfo.userid,
      pid: userInfo.pid,
      usernameType: userInfo.usernameType,
      if(getCookieValue('JetPrivilege_CCounter_C', 'userAcceptedCookie')=="true"){
        cookieAccept:'Y'
        cookieDateTime: getCookieValue('JetPrivilege_CCounter_C', 'ad')
        sessionID : JSESSIONID
        cookieAcceptedProperty : getCookieValue('JetPrivilege_CCounter_C', 'as');
        sessionDateTime :JSESSIONTIME;
      }
      else
      {
        cookieAccept:'N'
      },
      activeStatus: userInfo.activeStatus,
      age: userInfo.age,
      gender: userInfo.gender
    }

что мне нужно, если мое условие истинно, то создать объект

userInfo: {
  userid: userInfo.userid,
  pid: userInfo.pid,
  usernameType: userInfo.usernameType,
  cookieAccept:'Y'
  cookieDateTime: getCookieValue('JetPrivilege_CCounter_C', 'ad')
  sessionID : JSESSIONID
  cookieAcceptedProperty : getCookieValue('JetPrivilege_CCounter_C', 'as');
  sessionDateTime :JSESSIONTIME;
  activeStatus: userInfo.activeStatus,
  age: userInfo.age,
  gender: userInfo.gender
}

еще

userInfo: {
  userid: userInfo.userid,
  pid: userInfo.pid,
  usernameType: userInfo.usernameType,
  cookieAccept:'N'
  activeStatus: userInfo.activeStatus,
  age: userInfo.age,
  gender: userInfo.gender
}

Ответы [ 3 ]

0 голосов
/ 08 мая 2018

Добавьте ключи после буквального объекта:

var data = {
  userInfo: {
    userid: userInfo.userid,
    pid: userInfo.pid,
    usernameType: userInfo.usernameType,
    activeStatus: userInfo.activeStatus,
    age: userInfo.age,
    gender: userInfo.gender
};

if (getCookieValue('JetPrivilege_CCounter_C','userAcceptedCookie')=="true") {
  data.userInfo.cookieAccept:'Y';
  data.userInfo.ookieDateTime: getCookieValue('JetPrivilege_CCounter_C', 'ad');
  data.userInfo.sessionID : JSESSIONID;
  data.userInfo.cookieAcceptedProperty : getCookieValue('JetPrivilege_CCounter_C', 'as');
  data.userInfo.sessionDateTime :JSESSIONTIME;
} else {
  data.userInfo.cookieAccept:'N';
}
0 голосов
/ 08 мая 2018

Альтернативный подход заключается в следующем:

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)
0 голосов
/ 08 мая 2018

Вы не можете поместить оператор if else непосредственно в объявление объекта. Что вы можете сделать, это создать объект со статическим значением и использовать if else, чтобы присвоить значение вашему объекту после объявления. :

userInfo: {
  userid: userInfo.userid,
  pid: userInfo.pid,
  usernameType: userInfo.usernameType,
  activeStatus: userInfo.activeStatus,
  age: userInfo.age,
  gender: userInfo.gender
}

if (getCookieValue('JetPrivilege_CCounter_C', 'userAcceptedCookie') == "true") {
  userInfo.cookieAccept = 'Y'
  userInfo.cookieDateTime = getCookieValue('JetPrivilege_CCounter_C', 'ad')
  userInfo.sessionID = JSESSIONID
  userInfo.cookieAcceptedProperty = getCookieValue('JetPrivilege_CCounter_C', 'as');
  userInfo.sessionDateTime = JSESSIONTIME;
} else {
  userInfo.cookieAccept = 'N'
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...