2011-01-05 3 views
14

Я пытаюсь пройти через указанный ниже JS-объект со следующим фрагментом кода, в то время как вам нужно получить как ключ индекса, так и внутренний объект.jQuery: Проникнуть через объект правильно?

Как я должен это делать, поскольку следующее не работает?

Объект:

({ prop_1:["1", "2"], 
prop_2:["3", "4"]}) 

Мой код:

$.each(myObject, function(key,valueObj){ 
    alert(key + "/" + valueObj.toSource()); 
}); 

Ожидаемый результат:

prop_1/(["1", "2"]) 

ответ

22

Внутренний объект вы выборки хорошо, valueObjявляется массив, он просто не имеет метода .toSource() (на лизинге т не кросс-браузер в любом случае), если вы удалите, что вы получите предупреждение:

$.each(myObject, function(key,valueObj){ 
    alert(key + "/" + valueObj); 
}); 

You can test it out here, не будут выброшены, что выход только:

prop_1/1,2 
prop_2/3,4 

... default .toString() в массиве - это список с разделителями-запятыми, так вот что вы видите с alert(). Например, если вместо этого вы сделали alert(key + "/" + valueObj[0]);, вы бы увидели:

prop_1/1 
prop_2/3 

... так что вы можете видеть, у вас есть массив, который вы хотите, you can test that here.

3

Вы могли бы использовать для цикла:

var myObject = ({ prop_1:["1", "2"], prop_2:["3", "4"]}) 
    for (var key in myObject) { 
     if (myObject.hasOwnProperty(key)) { 
      alert(key + "/" + myObject[key]); 
     } 
    } 
+1

Это будет включать в себя функции, а также, так что не забудьте фильтровать их с 'typeof', если вы не хотите их. (JavaScript, The Good Parts, 3.7 Enumeration) – mdup

Смежные вопросы