Фильтрация деревьев массивов объектов в JavaScript: методы и примеры

Чтобы отфильтровать дерево массива объектов в JavaScript, вы можете использовать несколько методов. Вот некоторые часто используемые подходы:

  1. Array.prototype.filter(): метод filter()создает новый массив со всеми элементами, которые передают определенное условие (предикат), предоставленное функцией обратного вызова.. Этот метод можно использовать рекурсивно для фильтрации массивов вложенных объектов.

    const filteredArray = originalArray.filter(item => {
     // Apply your filtering condition here
    });
  2. Рекурсивная функция: вы можете определить рекурсивную функцию, которая обходит дерево массива объектов и применяет условие фильтра. Этот подход полезен, когда вам нужна более сложная логика фильтрации или вам нужно фильтровать глубоко вложенные структуры.

    function filterArrayTree(arr, condition) {
     return arr.filter(item => {
       // Apply your filtering condition here
       // Recursively filter nested arrays
       if (item.children) {
         item.children = filterArrayTree(item.children, condition);
       }
       return /* condition */;
     });
    }
    const filteredArray = filterArrayTree(originalArray, condition);
  3. Array.prototype.reduce(): метод reduce()можно использовать для фильтрации дерева массива объектов путем накопления отфильтрованных элементов в новый массив.

    function filterArrayTree(arr, condition) {
     return arr.reduce((filtered, item) => {
       // Apply your filtering condition here
       // Recursively filter nested arrays
       if (item.children) {
         item.children = filterArrayTree(item.children, condition);
       }
       if (/* condition */) {
         filtered.push(item);
       }
       return filtered;
     }, []);
    }
    const filteredArray = filterArrayTree(originalArray, condition);