javascript - 在 Javascript 中使用 foreach 格式化数据

标签 javascript

我想使用如下格式的数据进行 API 调用。

[{"Id":10, “FolderID”:22},{"Id":12, “FolderID”:22}]

我有以下不同的数据源:(使用 redux)

const FolderId = indexes.currentFolder.id;

这是一个常数值

const documentsId = indexes.copyDocuments;

这是 8, 9 , 10 的格式

我尝试通过循环文档数组来实现它 与 foreach。

我知道如何附加数据的唯一方法是使用数组,但这会为每个循环创建一个新数组,这不是我想要的。

const data = [];

documentsId.forEach(function(doc){
  data.push(`"Id":${doc},"FolderID":${FolderId}`)
})

有人知道这样做的方法吗?谢谢。

最佳答案

我相信您正在寻找的是 map 原型(prototype)

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map

map 的作用是从原始数组返回一个新数组,因此在您的示例中我们有一个数组

[8, 9, 10]

我们以与使用 forEach 相同的方式映射它,它先传递项目,然后传递索引

const newArray = [8, 9, 10].map(function (item, index) {
  return [item, index]
})
// [[8, 0], [9, 1], [10, 2]]

map 原型(prototype)返回一个新数组,因此无需复制数组以免改变它,这使得 map 原型(prototype)不可变

const documentsId = [8, 9, 10]

/* however you get your folderId */
const folderId = 22;

const mappedToObjectArray = documentsId.map(id => ({id, folderId}))


/*
  If you're used to es5 this might look more familiar 

  function formatData() {
    return documentsId.map(function (doc) {
      return {
        id: doc,
        folderId: folderId
      }
    })
  }
*/

console.log(mappedToObjectArray)

如果我误解了或者您对任何乐意提供帮助的事情感到困惑,请告诉我。

关于javascript - 在 Javascript 中使用 foreach 格式化数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51366618/

相关文章:

javascript - Angular 路由器不选择子状态(嵌套状态)

php - JQgrid:带有自定义删除按钮的格式化程序?

javascript - 以下 agularjs Controller 定义有什么区别?

javascript - 在 React App 中使用 Fullcalendar 方法

javascript - 碰撞检测 2D 游戏

javascript - 知道一个元素是否可以在窗口调整大小时适合另一个元素

javascript - JS - 一行代码中的多个事件监听器和动态参数

javascript - 如何在 React/Redux 计算器中编写不重复某些值的条件语句?

javascript - VueJS Uncaught ReferenceError

javascript - Node.js async.series() 不等待回调完成