Не могу получить информацию, которая находится внутри массива - PullRequest
0 голосов
/ 17 мая 2019

Я пытаюсь получить информацию, которая находится внутри массива, но не могу, каждый раз возвращает неопределенный оператор.

Это массив, он находится внутри переменной 'RESULTADO'

debug   {"recordType":"customrecord5",
         "id":"1",
         "values":{
           "CUSTRECORD4.custrecord6":[{"value":"11",
                                       "text":"11 CP BUSINESS : Empresa Teste"}],
           "CUSTRECORD4.custrecord5":[{"value":"7",
                                       "text":"LASER"}]}}

Код:

for (var i = 0; i < resultado.length; i++){
    var valores = resultado[i];
    log.debug(valores);
    var dados = valores['value']; // NAO ESTOU CONSEGUINDO PERCORRER A VARIAVEL DADOS 
    log.debug(dados);
    for (var u = 0; u < dados.length; u++){
        valor = dados[u];
        log.debug(valor);
    }

}

Мне нужно получить информацию, которая находится внутри индекса 'value', но не могу войти ...

Ответы [ 2 ]

2 голосов
/ 17 мая 2019

Название объекта недвижимости values, а не value.И его значением является объект, а не массив, поэтому вы не можете использовать dados.length;используйте цикл for-in для циклического переключения клавиш.

for (var i = 0; i < resultado.length; i++){
    var valores = resultado[i];
    log.debug(valores);
    var dados = valores.values;
    log.debug(dados);
    for (var u in dados){
        if (dados.hasOwnProperty(u)) {
            valor = dados[u];
            log.debug(valor);
        }
    }

}
1 голос
/ 17 мая 2019

Это потому, что у вас есть не массив, а объект.

Ну, объекты JS также известны как "ассоциативные массивы", но их поведение сильно отличается.Они структурированы с помощью пары ключевых значений "KVP" {KEY: VALUE}

. Для итерации по объекту необходимо использовать другой тип цикла, например цикл for / in.

let resultado = {
   "recordType": "customrecord5",
   "id": "1",
   "values": {
      "CUSTRECORD4.custrecord6": [{"value": "11", "text": "11 CP BUSINESS : Empresa 
       Teste"}],
      "CUSTRECORD4.custrecord5": [{"value": "7", "text": "LASER"}]
   }
};

for (let KEY in resultado) {

   console.log(KEY); // recordType, id, values
   console.log(resultado[KEY]); // customrecord5, 1, {...}
}

ИлиВы можете превратить его в массив

let resultadoArr = Object.entries(resultado);
console.log(resultadoArr);

// [ [ 'recordType', 'customrecord5' ],
//   [ 'id', '1' ],
//   [ 'values',
//     { 'CUSTRECORD4.custrecord6': [Object],
//       'CUSTRECORD4.custrecord5': [Object] } ] ]

И еще один совет: используйте 'let' и 'const' вместо 'var'.Это новый стандарт в наши дни.

Я надеюсь, что помог

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