Перебирайте вложенные объекты с помощью jQuery
Привет всем, я пытаюсь найти наиболее динамичный способ циклически проходить по массиву и возвращать определенные значения, возвращать конкретные значения... JSON глубоко структурирован и может измениться. Может ли быть формула $.each(), которая может помочь?
Пример:
var myobj = {
obj1: { key1: 'val1', key2: 'val2' },
obj2: { key1: '2val1',
key2: { nest1: 'val1', nest2: 'val2', nest3: 'val3' },
key3: { nest1: 'K3val1', nest2: 'K3val2',
nest3: [
{ nest1: 'val1', nest2: 'val2', nest3: 'val3' },
{ nest1: 'val1', nest2: 'val2', nest3: 'val3' }
]
}
},
obj3: { key1: 'dddddval1', key2: 'val2' }
}
Теперь скажем, я хочу получить "K3val2
"значение, но вместо жесткого кодирования это так: myobj.obj2.key3.nest2
есть ли динамичный способ сделать это с $.each()
Mybe?
1 ответ
Решение
Вы можете просто вкладывать звонки в $.each
:
// Loop the top level
$.each(myobj, walker);
function walker(key, value) {
// ...do what you like with `key` and `value`
if (value !== null && typeof value === "object") {
// Recurse into children
$.each(value, walker);
}
}
Если вы хотите знать, насколько вы глубоки, вы можете сделать это тоже:
var path = "";
// Loop the top level
$.each(myobj, walker);
function walker(key, value) {
var savepath = path;
path = path ? (path + "." + key) : key;
// ...do what you like with `key` and `value`
if (value !== null && typeof value === "object") {
// Recurse into children
$.each(value, walker);
}
path = savepath;
}