Рекурсия в структурах данных.
Рекурсию можно также использовать для последовательного обхода DOM HTML до тех пор, пока не будет найден элемент, не содержащий дочерних элементов. В следующем примере рекурсия применена для глубокого обхода объекта с целью извлечения вложенного значения:
var dan = { type: "person", data: { gender: "male", info: { id: 22, fullname: { first: "Dan", last: "Deacon" } } } }
Напишем функцию deepPick, которая может служить для доступа к типу Dan, хранящемуся сразу же в первом объекте, или для углубления во вложенные объекты для нахождения имени Dan. Отправляя строку, в которой используется точечная нотация, можно указать, где найти значения, глубоко вложенные в объект:
const deepPick = (fields, object={}) => { const [first, ...remaining] = fields.split(".") return (remaining.length) ? deepPick(remaining.join("."), object[first]) : object[first] }
Использование функции:
deepPick("type", dan); // "person" deepPick("data.info.fullname.first", dan); // "Dan"
Практика