#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"]);