首页 > 解决方案 > .map 不是 javascript 中的函数

问题描述

我一直在尝试在 javascript 中的数组上使用 map 方法,这是我一直在使用的数组的快照。

[
   {"name":"supplier","elements":["beta","gama","alpha"]},
   {"name":"commodity","elements":[]},
   {"name":"year","elements":[]}
]

这是我对地图的使用

function renderTable(entityMap){
  return entityMap.map((lookup,index)=>{
    console.log(lookup)
    const {name, elements} = lookup
    return (
      <tr key={index}>
      <td>{name}</td>
      <td>{elements}</td>
      </tr>
    )
  })
}

而且我知道我使用的是正确的数组,因为当我这样做时

console.log(entityMap[1])

它返回{name: "commodity", elements: Array(0)}

更新

我在 render() 中调用 renderTable 函数

class LookupTable extends Component {
  render() {
    const {
      close,
      saveAndClose,
      entityNames,
      entityModal,
      entityMap
    } = this.props
    console.log(entityMap[1])

    return (
      <Modal 
        title='Add Lookups for entities'
        visible={Boolean(entityModal)}
        onOk={() => saveAndClose()}
        onCancel={() => close()}
        okText='save'
      >
          <div>
            <table>
              <tbody>
              {renderTable({entityMap})}
              </tbody>
              </table>
          </div>

      </Modal>
    )
  }
}


更新 2

Array.isArray(entityMap) 返回真

标签: javascriptarraysjsonreactjsobject

解决方案


您需要删除调用 renderTable 的大括号,因为 map 方法适用于数组而不适用于对象。

我在需要删除花括号的地方添加了代码,希望对您有所帮助

<tbody>
  {renderTable(entityMap)}
</tbody>


推荐阅读