Как заставить ключ объекта зависеть от другого ключа в том же объекте? - PullRequest
0 голосов
/ 10 апреля 2019

У меня есть очень простая функция, которая создает объект и регистрирует его.

Один из ключей в объекте должен зависеть от другого ключа.

Думаю, было бы намного понятнее, когда я добавлю код

module.exports = function (information) {

    var numObj = {
        [-1]: "accepted",
        [0]: "fail",
        [1]: "success"
    }
    console.log(numObj)

    var ip = require('ip');
        var logObj = {
            UUID: information.UUID, // get from outside
            FN_TIME_STAMP: information.FN_TIME_STAMP, // not sure if necessary
            FN_CORRELATION_ID: information.FN_CORRELATION_ID,// get from outside
            FN_REF_ID: information.FN_REF_ID, //get from outside
            FN_METHOD_NAME: "docToMail", // constant
            FN_STATUS_CODE: information.FN_STATUS_CODE, //get from outside
            FN_STATUS_DESC: numObj[this.FN_STATUS_CODE], // depends on FN_STATUS_CODE
            FN_DOC_ID: information.FN_DOC_ID, //get from outside
            FN_USER_NAME: "", // empty for now, probably un-necessary
            FN_APP_ID: information.FN_APP_ID, //get from outside
            FN_RMT_ADDRS: ip.address(),//ip address of local machine
            FN_NUM_OF_RETRIES: information.FN_NUM_OF_RETRIES, // get from outside
            FN_FILETYPE: information.FN_FILETYPE, // get from outside
            FN_REC_STATE: numObj[this.FN_STATUS_CODE] //depends on FN_STATUS_CODE
        }
        console.log(logObj)
}

Я просто хочу, чтобы FN_REC_STATE и FN_STATUS_DESC были строкой в ​​зависимости от FN_STATUS CODE. Если его -1, я хочу, чтобы строка была принята Если его 0, я хочу, чтобы строка была неудачной Если его 1, я хочу, чтобы строка была «success»

как сейчас, я просто не определен, пожалуйста, помогите!

Спасибо

1 Ответ

2 голосов
/ 10 апреля 2019

Если предположить, что information.FN_STATUS_CODE равно -1, 0 или 1, должно работать следующее решение.

Если вы измените

FN_REC_STATE: numObj[this.FN_STATUS_CODE]

на

FN_REC_STATE: numObj[information.FN_STATUS_CODE]

тогда следует ввести правильное значение в FN_REC_STATE.

Это потому, что к моменту оценки неисправной строки this.FN_STATUS_CODE еще не было определено.

Вам также следует изменить это для определения FN_STATUS_DESC.

Кроме того, похоже, что вы, возможно, неправильно понимаете, что означает this в контексте этой функции.На самом деле это относится к глобальному объекту, а не к объекту logObj.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...