tree-model-js как получить предыдущий идентификатор узла

Я хотел знать предыдущий посещенный узел из дерева. пытаясь с приведенным ниже примером

var TreeModel = require('tree-model');
tree = new TreeModel();

rootMain = tree.parse({
    id: 1,
    children: [
        {
            id: "11",
            children: [{id: "111"}]
        },
        {
            id: "12",
            children: [{id: "121"}, {id: "122"}]
        },
        {
            id: "13"
        }
    ]
});

Если предположить, что я перехожу к узлу 121 и 122, я хотел родительский узел, то он должен вернуть мне 12 Если предположим, что я перехожу к узлу 111, я хотел родительский узел, то он должен вернуть мне 11 Если предположим, что я перехожу к узлу 13 Я хотел родительский узел, то он должен вернуть мне 1

2 ответа

Решение

Обходя дерево, вы можете получить родителя текущего узла с node.parent,

rootMain.walk(node => {
  console.log('node id:', node.model.id);

  if(node.parent) {
    console.log('parent node id:', node.parent.model.id);
  }
});

Это регистрирует желаемый родительский идентификатор

var parent_id;

rootMain.walk(function (node) {

    var current_id = node.model.id;
    if (node.model.id === 121) 
        console.log(parent_id);
        return true;
    parent_id = current_id;
});
Другие вопросы по тегам