javascript - 如何在 reactjs ES6 的 JSONArray 上使用 .map() 函数

标签 javascript json reactjs ecmascript-6

我有一个服务器返回的 JSONArray。我想在其上使用 .map() 以便我可以获得该数组中存在的每个对象的键值对。我编写了以下代码,但出现错误“files.map 不是函数”。谁能帮我解决这个问题?

showUploadedFiles()
  {
    const page = 1;
    const items_per_page = this.state.event.file_ids.length;
    getAllTaskFiles(this.state.event.id, page, items_per_page).then((allFiles) => {
      this.renderUploadedFiles(allFiles);
    });

  }

  renderUploadedFiles(files)
  {
    let details = null;
    details = files.map((singleFile) => {
    return (
      <div>
        <a href="#" >{singleFile.filename}</a> 
        <a href="#" >{singleFile.file_path}</a>
      </div>
      );
    });
  }  

我的 JSONArray 是:

[{"file_id": 5224879255191552, "filename": "children_walk_friends_forest_116878_3840x2160.jpg", "file_path": "/api/files/encoded_gs_file%3AdHJhY2tpbmctYXBpL3YxL2FjY291bnRzLzU2Mjk0OTk1MzQyMTMxMjAvdGFza3MvNDk5NjE4MDgzNjYxNDE0NC81MjI0ODc5MjU1MTkxNTUyL2Zha2UtemRNeklhZ1RTYl9PN3RXY2pXbkhVQT09"}, {"file_id": 4943404278480896, "filename": "banner_old.jpg", "file_path": "/api/files/encoded_gs_file%3AdHJhY2tpbmctYXBpL3YxL2FjY291bnRzLzU2Mjk0OTk1MzQyMTMxMjAvdGFza3MvNDk5NjE4MDgzNjYxNDE0NC80OTQzNDA0Mjc4NDgwODk2L2Zha2UtcmJjbDBVdVFzVmZkMjRtRUV2ME1xZz09"}] 

最佳答案

正如其他用户所指出的,您必须使用 JSON.parse() 从您的字符串中获取对象。这是代码片段,将您的文件存储在一个数组中。

const str = '[{"file_id": 5224879255191552, "filename": "children_walk_friends_forest_116878_3840x2160.jpg", "file_path": "/api/files/encoded_gs_file%3AdHJhY2tpbmctYXBpL3YxL2FjY291bnRzLzU2Mjk0OTk1MzQyMTMxMjAvdGFza3MvNDk5NjE4MDgzNjYxNDE0NC81MjI0ODc5MjU1MTkxNTUyL2Zha2UtemRNeklhZ1RTYl9PN3RXY2pXbkhVQT09"}, {"file_id": 4943404278480896, "filename": "banner_old.jpg", "file_path": "/api/files/encoded_gs_file%3AdHJhY2tpbmctYXBpL3YxL2FjY291bnRzLzU2Mjk0OTk1MzQyMTMxMjAvdGFza3MvNDk5NjE4MDgzNjYxNDE0NC80OTQzNDA0Mjc4NDgwODk2L2Zha2UtcmJjbDBVdVFzVmZkMjRtRUV2ME1xZz09"}]';

const files = JSON.parse(str);
const details = files.map((singleFile) => {
  return (
    `<div>
      <a href="#">{singleFile.filename}</a> 
      <a href="#">{singleFile.file_path}</a>
    </div>`
  );
});

console.log(details);
.as-console-wrapper { max-height: 100% !important; top: 0; }

关于javascript - 如何在 reactjs ES6 的 JSONArray 上使用 .map() 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45904293/

相关文章:

javascript - Angular 2+ 加载整个模块还是只加载导出的组件?

javascript - 如何选择特定列中的一行而不触发 React Table 中整行的 onClick 函数

php - 使用 PHP 格式化 JSON 数据

php - 无法安装 Composer - 缺少 json 扩展名

javascript - 如何在一次调用中分配多个 html 元素值?

javascript - 在与 ng-repeat 相同的标签上使用 ng-click 并使用来自 ng-repeat 范围的参数

javascript - HTML。隐藏/显示下拉菜单取决于是否在另一个下拉菜单上选择了一个选项

json - 将纪元时间戳解码为 time.Time

javascript - 引用 enzyme 导入错误

reactjs - TinyMCE 表无法在 Material-ui Modal 上正确工作/加载