You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript中如何从数据数组创建对象并解决push报错问题

错误根因

你声明的plots是初始为空的普通对象,没有提前为不同的status值初始化对应数组容器,第一次执行plots[status].push()时,plots[status]的值是undefined,不存在push方法,因此触发类型报错。

修复方案

在执行push操作前,先判断plots上是否存在当前status对应的属性,不存在就先赋值为空数组:

makeArrayFilteredPlots = () => {
  let plots = {};
  this.props.filteredPlots.forEach((plot) => {
    const status = plot.entity.status.slug;
    // 新增属性初始化逻辑
    if (!plots[status]) {
      plots[status] = [];
    }
    plots[status].push(plot);
  });
  console.log(plots);
};

可选简化写法

也可以用Array.reduce实现相同逻辑,代码更简洁:

makeArrayFilteredPlots = () => {
  const plots = this.props.filteredPlots.reduce((acc, plot) => {
    const status = plot.entity.status.slug;
    acc[status] = acc[status] || [];
    acc[status].push(plot);
    return acc;
  }, {});
  console.log(plots);
};

内容的提问来源于stack exchange,提问作者nicolascanala

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 14:45:04