Подскажите jpath

Поддержка
  • @sedOFF

    Можешь дать пример запроса(title или что ты хочешь найти) и его результата? Пока не понимаю в чем сложность обойти все дерево, чтобы найти нужное.

  • Пример:

    $..[?(@.key === "19170000")].title
    
  • @Oyasumi-Punpun Он найдет, только тайтл своего элемента, а мне нужно получить что-то типа того:

    [
        "19 Information, communication and media technology",
        "19-05 Computer module",
        "19-05-04 Graphic card (computer module)",
        "19-05-04-02 PCI graphics board"
    ]
    

    Ну, те сразу всё дерево до начального

  • @sergerdn Сложность в том, что это дерево каталога и оно разное и по элементам и по глубине. Циклами будет долго перебирать Мне нужно получить, грубо говоря, путь к этому кею, состоящий из тайтлов:
    19 Information, communication and media technology - 19-05 Computer module - 19-05-04 Graphic card (computer module) - 19-05-04-02 PCI graphics board

  • @sedOFF said in Подскажите jpath:

    Циклами будет долго перебирать

    Да ничего не долго, миллисекунды будет.

    @sedOFF said in Подскажите jpath:

    @sergerdn Сложность в том, что это дерево каталога и оно разное и по элементам и по глубине.

    Может быть нужна рекурсия, чтобы обойти любую вложенность. Надо думать.

  • $.[?(@.key === "19000000")].title

  • @sedOFF $[?(@.key === "19000000")]..title

  • @gaget007 Бро, спасибо, но чтот не работает.
    Я нашел решение! Оказывается, если сделать определенный http запрос с определенным key то возвращается общий json (как в примере, и там только одна ветка открыта)! И только в этой ветке, где есть сам этот key, есть не пустые children (остальные пустые). Вот я и первым кубиком собираю те тайтлы у которых чилдрен НЕ пустой

    56848683-c80b-4dec-b713-37fd6eb13833-изображение.png
    ОТВЕТ:

    [
        "19 Information, communication and media technology",
        "19-05 Computer module",
        "19-05-04 Graphic card (computer module)"
    ]
    

    И вторым кубиком собираю тайтл того элемента у кого key равен чему то...Уффф!)

    c3649b4c-972f-4274-8f69-e23fd74ee126-изображение.png
    ОТВЕТ:

    19-05-04-02 PCI graphics board
    

    Если бы все ветки раскрывались, то я хрен бы что нашел таким методом. А так, повезло! )))

    Ребят, всем спасибо огромное, что откликнулись! ) Всем поставил лайки. Тему можно закрывать! )

  • @sedOFF said in Подскажите jpath:

    Если бы все ветки раскрывались, то я хрен бы что нашел таким методом. А так, повезло! )))

    Деревья лучше всего обходить рекурсией, но раз уже не актуально то ладно )

    Примерно так

    function getAllTitliesByKey(list, key) {
        var root = list.filter(function(el) {
            return el.key === key
        })[0]
    
        if (!root) return []
        
        var getAllTitles = function(el) {
            var titles = [el.title]
    
            el.children.forEach(function(children){
                titles = titles.concat(getAllTitles(children))
            })
            return titles
        }
        return getAllTitles(root)
    }
    
    [[TITLE_LIST]] = getAllTitliesByKey([[CATEGORY_LIST]], '01') 
    
  • @UserTrue Спасибо, думаю ещё пригодится! )