Задать вопрос
  • Как объект, состоящий из массивов значений свойств, преобразовать в массив объектов?

    0xD34F
    @0xD34F Куратор тега JavaScript
    const arr = Object
      .entries(obj)
      .reduce((acc, [ k, values ]) => (
        values.forEach((v, i) => (acc[i] ??= {})[k] = v),
        acc
      ), []);

    или

    const keys = Object.keys(obj);
    const arr = obj[keys[0]]?.map((_, i) => {
      return Object.fromEntries(keys.map(k => [ k, obj[k][i] ]));
    }) ?? [];

    или

    const zip = (arrs, defaultValue = null) =>
      Array.from(
        { length: Math.max(...arrs.map(n => n.length)) },
        (_, i) => arrs.map(n => i < n.length ? n[i] : defaultValue)
      );
    
    const combine = (keys, values, defaultValue = null) =>
      keys.reduce((acc, n, i) => (
        acc[n] = i < values.length ? values[i] : defaultValue,
        acc
      ), {});

    const arr = Array.from(
      zip(Object.values(obj)),
      combine.bind(null, Object.keys(obj))
    );
    Ответ написан
    Комментировать