在Java中使用foreach格式化数据

时间:2018-07-16 16:48:57

标签: javascript

我想用这种格式的数据进行API调用。

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

我下面有这些不同的数据源:(使用redux)

const FolderId = indexes.currentFolder.id;

这是一个常数值

const documentsId = indexes.copyDocuments;

这是8、9、10的格式

我试图通过遍历documents数组来实现它 与foreach。

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

const data = [];

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

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

2 个答案:

答案 0 :(得分:2)

我相信您正在寻找的是地图原型

  

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

地图要做的是从原始数组中返回一个新数组,因此在您的示例中,我们有一个

数组
[8, 9, 10]

我们以与使用forEach的方式进行映射,即先传递项目,然后传递索引

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

地图原型返回一个NEW数组,因此无需复制您的数组即可使其不发生变异,这使地图原型不可变

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)

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

答案 1 :(得分:1)

当您想要的是 objects 时,传递给data数组的东西是 strings 。代替:

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

.... do:

data.push({ Id: doc, FolderID: FolderId })

...和data将是对象的数组,而不是 strings

我还建议使用map之类的@JoeWarner,这是构建数组的一种更为简洁的方法。

const data = documentsId.map(doc => ({ Id: doc, FolderID: FolderId }))