Существует ли путь (в jQuery или JavaScript) для цикличного выполнения через каждый объект, и это - дети и внуки и так далее?
Раз так... я могу также считать их имя?
Пример:
foo :{
bar:'',
child:{
grand:{
greatgrand: {
//and so on
}
}
}
}
таким образом, цикл должен сделать что-то вроде этого...
loop start
if(nameof == 'child'){
//do something
}
if(nameof == 'bar'){
//do something
}
if(nameof =='grand'){
//do something
}
loop end
Вы ищете цикл for ... in
:
for (var key in foo)
{
if (key == "child")
// do something...
}
Имейте в виду, что циклы for ... in
будут перебирать любые перечислимые свойства, включая те, которые добавляются к прототипу объекта. Чтобы избежать воздействия на эти свойства, вы можете использовать метод hasOwnProperty
, чтобы проверить, принадлежит ли свойство только этому объекту:
for (var key in foo)
{
if (!foo.hasOwnProperty(key))
continue; // skip this property
if (key == "child")
// do something...
}
Выполнение цикла рекурсивно может быть таким же простым, как написание рекурсивной функции:
// This function handles arrays and objects
function eachRecursive(obj)
{
for (var k in obj)
{
if (typeof obj[k] == "object" && obj[k] !== null)
eachRecursive(obj[k]);
else
// do something...
}
}