无法获取数组内部的信息

时间:2019-05-16 21:18:19

标签: javascript arrays object

我试图获取数组内部的信息,但是每次返回未定义的语句都无法。

那是数组,它在变量'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);
    }

}

我需要获取索引“值”内的信息,但无法获取...

2 个答案:

答案 0 :(得分:2)

该属性的名称为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 :(得分:1)

这是因为您拥有的数据不是数组,而是对象。

嗯,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”。这是当今的新标准。

我希望我有所帮助