【问题标题】:Convert Object to Array returns Undefined将对象转换为数组返回未定义
【发布时间】:2020-07-20 16:07:35
【问题描述】:

这是我要转换为数组的对象:

{ 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'”的错误,当在控制台内我用值记录数组时 - 所以我不明白我如何获得未定义的值

These are the objects/arrays I get logged into console 我尝试过关注这些其他问题: 1.Object to Array returns undefined 2.Mapping Object to convert object to array

但它们不足以解决这个问题

提前感谢您的建议!

【问题讨论】:

  • 尝试使用除 'array' 之外的其他变量名。
  • 刚试了没变
  • 这是你的全部代码吗?我看不出为什么 array 会是未定义的。
  • 尝试使用方法 Array.from() 将对象转换为数组。这是文档:developer.mozilla.org/pl/docs/Web/JavaScript/Referencje/Obiekty/…
  • 不,这不是我的全部代码;无论如何,我在 Dennis Vash 的回答之后解决了这个问题。不过感谢大家的帮助!

标签: javascript arrays json reactjs jsx


【解决方案1】:

尝试使用Object.values 返回一个对象值数组

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

console.log(convertObjectToArray(object));

【讨论】:

  • 试过了,确实有效,非常感谢!!为了避免将来出现类似这样的问题,你知道为什么我在之前的代码中得到了一个未定义的值吗?
  • 在那些sn-ps上找不到错误,它应该来自其他地方
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-20
相关资源
最近更新 更多