Преобразовать объект в массив возвращает неопределенный - PullRequest
0 голосов
/ 08 апреля 2020

Вот объект, который я пытаюсь преобразовать в массив:

{ 1: {..}, 2: {..}, 3: {..}, 4: {..}, 5: {..}}

Это функция, которую я использую для преобразования объекта в массив:

const convertObjectToArray = (object) => {
  const array = [];

  if (object) {
    Object.keys(object).forEach((key) => {
      array.push({[key]: object[key]});
    })
    console.log('object inside function', object);
    console.log('array inside function', array);
    return array;
  } else {
    return [];
  }
}

И здесь метод рендеринга:

class PostList extends React.Component {
  render() {
    const { postList } = this.props;

    const array = convertObjectToArray(postList);

    console.log('postList', postList);
    console.log('array', array);

    return (
      <div>
        {array.map(({ id, ...otherCollectionProps }) => {
          return (
            <Post key={id} {...otherCollectionProps} />
          );
        })}
      </div>
    );
  }
};

Проблема здесь в том, что я получаю ошибку «Не могу прочитать свойство 'map' of undefined», когда внутри консоли я записываю массив со значениями - и поэтому я не понимаю, как я получаю неопределенное значение

Это объекты / массивы, в которые я захожу в консоль Я пытался решить следующие проблемы: 1. Возвращает объект в массив undefined 2. Отображение объекта для преобразования объекта в массив

Но они оказались недостаточно полезными, чтобы решить эту проблему

Заранее спасибо за ваши предложения!

1 Ответ

1 голос
/ 08 апреля 2020

Попробуйте использовать Object.values , который возвращает массив значений объекта .

const object = { 1: { a: 'a'}, 2: { b: 'b'}, 3: { c: 'c'} }
const convertObjectToArray = Object.values;

console.log(convertObjectToArray(object));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...