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

ReactJS中如何正确map遍历渲染对象内嵌数组属性

问题描述

现有如下结构的集合对象:

{
    "id": 1,
    "collectionName": "dsa",
    "collectionItemsID": [
        "ad",
        "deneme1"
    ],
    "ownerOfCollection": "117961395738439786389",
    "createdAt": "2022-06-16T12:54:52.146Z",
    "updatedAt": "2022-06-16T12:54:52.146Z"
}

在ReactJS中直接通过{collection.collectionItemsID}渲染该数组字段时,数组元素会被直接拼接,输出无分隔的结果:addeneme1。
需求是不额外编写JavaScript字符串分割逻辑,实现数组元素的分隔独立渲染。之前尝试使用Object.keys方法实现未成功,需要找到正确通过map遍历collectionItemsID数组的渲染方案,参考的标准列表渲染写法如下:

{data.map((item, i) => (
  <tr key={i}>
    <td>
      <input
        id={item.user_id}
        type="checkbox"
        value={item.user_id}
        onChange={handleChange}
        checked={isChecked}
      />
    </td>
    <td>{item.user_id}</td>
    <td>{item.user_name}</td>
    <td className="isbanned">{item.isbanned}</td>
    <td>{item.registration_date}</td>
    <td>{item.last_login}</td>
  </tr>
))}
原因说明

React直接渲染数组变量时,会默认调用数组的toString()方法做类型转换,将所有元素拼接为连续字符串输出,不会自动添加分隔符或用独立标签包裹元素。之前Object.keys方案无效,是因为该方法的作用是获取对象自身的可枚举键名数组,并非用来遍历目标数组的元素内容。

实现方案

先判断集合数据是否加载完成,再直接调用collectionItemsID数组的map方法遍历,为每个元素返回独立的渲染节点即可,示例代码如下:

<div>
  {Object.keys(collection).length > 0 ? (
    <div>
      <h1>{collection.collectionName}</h1>
      <p>{collection.description}</p>
      {collection.collectionItemsID.map(function (itemID) {
        // 列表渲染需给根节点设置唯一key,若itemID全局唯一可直接作为key值,性能优于索引
        return <a key={itemID} href={`/${itemID}`}>{itemID}</a>
      })}
    </div>
  ) : (
    <p>Loading...</p>
  )}
</div>

补充:如果需要元素间展示分隔符,可在map返回的节点后按需添加逗号、空格,或给每个元素包裹块级标签实现自动换行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 15:51:26