RecursiveIterator / Рекурсивный итератор
В продолжении темы Object.traverse() запилил рекурсивный итератор.
https://github.com/nervgh/recursive-iterator Можно использовать как в ES5, так и в ES6 окружениях. При использовании в ES6: - поддерживает ES6 итерационные протоколы - совместим с for...of циклом Пример на es6:
var root = {
object: {
number: 1
},
string: 'foo'
};
for(let item of new RecursiveIterator(root)) {
console.log(item.path.join('.'), item.node);
}
// or
for(let {parent, node, key, path, deep} of new RecursiveIterator(root)) {
console.log(path.join('.'), node);
}
// or
for(let {node, path} of new RecursiveIterator(root, 1)) {
console.log(path.join('.'), node);
}
Больше инфы здесь Теги: js, javascript, walk, walker, recursive, recursion, iterator, iteratate, traverse, traversing, object, tree, json |
Обновил до версии 1.0.0.
- произведен глобальный рефакторинг в результате которого, инератор стал проще, читабельней и, надеюсь, быстрее - введен параметр максимальной глубины погружения - добавлены и описаны в документации методы - добавлен коллбек onStepInto(), который позволяет гибко управлять обходом объектов - возможность изменения объектов на месте - больше тестов |
Можно использовать совместно с Collection, включая потоки :)
$C(new RecursiveIterator(root)).get({
use: 'for of',
thread: true,
filter: 'someFilter1 && !someFilter2'
}).onComplete = function (data) {
...
};
:) |
Цитата:
А разве Collection сам не может "рекурсивно" перебирать объекты? |
Цитата:
|
Цитата:
У kobezzza в coverage в collection заявлен процент 73. Любопытно, как он его получил :) |
Цитата:
Цитата:
|
Цитата:
|
Цитата:
upd: глянул доку, так и есть - это просто istanbul + babel :) |
Цитата:
kobezzza, зарегай свои наработки в npm & bower для продвижения (если еще этого не сделал.) и напиши про это в readme |
| Часовой пояс GMT +3, время: 08:13. |