цикл через массив внутри объекта, внутри другого объекта с jQuery? - PullRequest
1 голос
/ 29 августа 2011

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

Объект выглядит следующим образом:

var guitar = {
  high4high5: {
    name: 'high 4th, high 5th',
    tuning: [ [5,4], [-2,3], [2,3], [7,3] ]
  },
  high4low5: {
    name: 'high 4th, low 5th',
    tuning: [ [5,4], [-2,3], [2,3], [7,2] ]
  }
}

Я знаю, что яможно просто продолжать цикл с jQuery для каждого цикла следующим образом:

$.each(guitar, function(key, value) {
  console.log('1st loop: ' + key, value);
  $.each(value, function(key, value) {
    console.log('2nd : ' + key, value);
    $.each(value, function(key, value) {
      console.log('3rd : ' + key, value);
    });
  });
});

Но, очевидно, в конечном итоге все и снова повторяется.

Данные, которые мне нужно получить, это «имя»(строка) и 'настройка' (массив) каждого объекта.

Я предполагаю, что есть лучший способ получить то, что я хочу, чем просто бесконечные циклы!

Вероятно, важно отметить, что яЯ не буду знать имя объекта внутри объекта ('high4high5' и т. д.), но я буду знать, что значения в этом объекте всегда будут name: (string) и tuning: (array).

РЕДАКТИРОВАТЬ:

Хорошо, я понял это.

$.each(guitar, function(key, value) {
  var tuningName = value.name;
  var tuningArray = value.tuning;
  console.log('name: ' + tuningName);
  $.each(tuningArray, function(key,value) {
    console.log(value);
  });
});

Фу!

Ответы [ 2 ]

8 голосов
/ 29 августа 2011

Вы действительно не нуждаетесь в jQuery для этогоВы можете сделать это с помощью старого доброго Javascript:

for(g in guitar) {
    console.log(guitar[g].name);
    console.log(guitar[g].tuning);
}
1 голос
/ 30 августа 2011

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

$.each(guitar, function(key, value) {
  var tuningName = value.name;
  var tuningArray = value.tuning;
  console.log('name: ' + tuningName);
  $.each(tuningArray, function(key,value) {
    console.log(value);
  });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...