Задать вопрос
  • Вложенное дерево - как достать все id?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Рекурсия есть:

    const getFromTree = (tree, childrenKey, getter = n => n) =>
      Array.isArray(tree)
        ? tree.flatMap(n => [
            getter(n),
            ...getFromTree(n[childrenKey], childrenKey, getter),
          ])
        : [];
    
    // или
    
    function* flatTree(tree, childrenKey) {
      if (
        tree instanceof Object &&
        tree[Symbol.iterator] instanceof Function
      ) {
        for (const n of tree) {
          yield n;
          yield* getFromTree(n[childrenKey], childrenKey);
        }
      }
    }

    Рекурсии нет:

    const getFromTree = function(tree, childrenKey, getter = n => n) {
      const result = [];
    
      for (const stack = this(tree); stack.length;) {
        const n = stack.pop();
        result.push(getter(n));
        stack.push(...this(n[childrenKey]));
      }
    
      return result;
    }.bind(x => x instanceof Array ? [...x].reverse() : []);
    
    // или
    
    const flatTree = function*(tree, childrenKey) {
      const stack = [];
    
      for (let [ i, arr ] = this(tree); ++i < arr.length || stack.length;) {
        if (i === arr.length) {
          [ i, arr ] = stack.pop();
        } else {
          yield arr[i];
          stack.push([ i, arr ]);
          [ i, arr ] = this(arr[i][childrenKey]);
        }
      }
    }.bind(x => [ -1, x?.constructor === Array ? x : [] ]);

    Достаём id:

    // т.к. id верхнего уровня получать не желаете, избавимся от него
    const withoutTopLevel = data.flatMap(n => n.children);
    
    // если использовать обычную функцию
    const ids = getFromTree(withoutTopLevel, 'children', n => n.id);
    // или, генератор
    const ids = Array.from(flatTree(withoutTopLevel, 'children'), n => n.id);
    Ответ написан
    1 комментарий
  • Как настроить html-webpack-plugin в laravel?

    profesor08
    @profesor08 Куратор тега JavaScript
    Универсального решения я не подскажу, но у тебя есть html-webpack-lugin, твой index.html наверняка можно просто переименовать в .php файл, вставить необходимый код, а в доп параметрах указать путь, куда его сохранять в проекте laravel. Например в layoyts. Сам плагин подставит файлы скриптов и стилей, остальное не тронет.

    new HTMLWebpackPlugin({
      template: './react/src/app/index.html'
    })
    Ответ написан
    Комментировать
  • Как называется данный блок у результатов Google?

    mipfikus
    @mipfikus
    Вообще я не знаю, но
    Погуглите: "быстрые ссылки в гугл". Там ответ на ваши 2 вопроса в первых строчках поиска.
    Ответ написан
    2 комментария
  • Как проинициализировать большое кол-во однотипных свойств?

    @dGololobov
    начинающий


    По этому же принципу, можно создать элементы из заранее известного массива с их именами и использовать тогда объект для хранения моделей

    Ответ написан
    Комментировать