Доступ к массиву, который находится в 3-м измерении, с помощью Javascript

#javascript #jquery #arrays #json

#javascript #jquery #массивы #json

Вопрос:

Я пытаюсь получить подмассив из объекта большего размера.

Я могу получить доступ ко 2-му уровню, используя приведенный ниже код:

  var value = $(this).val(); 
 var id = $(this).attr('id'); 
            alert(id   "-"   value); // outputs OK the id and value veriables are good EG "I17-SATISFACTORY"
            console.log(autoPop[id]); // gives me the array from I17
            console.log(autoPop[id][value]); // says undefined 
  

Вот массив:

 {
"I34": [
    {
        "Y": [{
                "I35": "N/A",
                "I39": "Y",
                "I43": "Y"
            }],
        "LIM": [{
                "I35": "N/A",
                "I36": "N/A"
            }]
    }
], 
"I4": [
    {
        "0": [{
                "I36": "N/A"
            }],
        "1": [{
                "I7": "TEST OK ",
                "I8": "N/A"

            }]
    }
],
    "I17": [
    {
        "SATISFACTORY": [{
                "I7": "test ok 2",
                "I37": "N/A",
                "I38": "N/A",
                "I39": "Y",
                "I43": "Y"
            }],
        "UNSATISFACTORY": [{
                "I7": "TEST OK ",
                "I8": "N/A"

            }]
    }
]
}
  

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

Как только я смогу получить доступ к массиву, мне нужно выполнить цикл по массиву и использовать jQuery для обновления значений полей и т.д.

Надеюсь, я на правильном пути, и кто-нибудь сможет разобраться, что я делаю неправильно!

Спасибо, Крис

ОТРЕДАКТИРУЙТЕ для уточнения: Значение, которое я хотел бы получить, или массив объектов с:

 [{
            "I7": "test ok 2",
            "I37": "N/A",
            "I38": "N/A",
            "I39": "Y",
            "I43": "Y"
        }]
  

Комментарии:

1. какое значение вы хотите получить из массива?

2. [{ «I7»: «test ok 2», «I37»: «N / A», «I38»: «N / A», «I39»: «Y», «I43»: «Y» }]

3. Каждый раз, когда у вас есть массив с одним объектом в нем (что кажется немного бессмысленным, но хорошо ..), поэтому вы должны обращаться к нему с дополнительным [0] : autoPop[id][0][value]

Ответ №1:

Поскольку на каждом уровне есть объект, вам всегда нужно сначала получить этот объект, используя [0] , а затем искать то, что вы хотите:

 var arr = {
  "I34": [{
    "Y": [{
      "I35": "N/A",
      "I39": "Y",
      "I43": "Y"
    }],
    "LIM": [{
      "I35": "N/A",
      "I36": "N/A"
    }]
  }],
  "I4": [{
    "0": [{
      "I36": "N/A"
    }],
    "1": [{
      "I7": "TEST OK ",
      "I8": "N/A"

    }]
  }],
  "I17": [{
    "SATISFACTORY": [{
      "I7": "test ok 2",
      "I37": "N/A",
      "I38": "N/A",
      "I39": "Y",
      "I43": "Y"
    }],
    "UNSATISFACTORY": [{
      "I7": "TEST OK ",
      "I8": "N/A"

    }]
  }]
}

console.log(arr["I17"]);
console.log(arr["I17"][0]["SATISFACTORY"]);
console.log(arr["I17"][0]["SATISFACTORY"][0]["I7"]);