Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/449.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Javascript中使用foreach格式化数据_Javascript - Fatal编程技术网

在Javascript中使用foreach格式化数据

在Javascript中使用foreach格式化数据,javascript,Javascript,我想使用如下格式的数据进行API调用 [{"Id":10, “FolderID”:22},{"Id":12, “FolderID”:22}] 我有以下不同的数据源:(使用redux) 这是一个常量值 const documentsId = indexes.copyDocuments; 这是8,9,10的格式 我试图通过循环文档数组来实现它 用foreach 我知道如何附加数据的唯一方法是使用数组,但这会创建每个循环的新数组,这不是我想要的 const data = []; document

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

[{"Id":10, “FolderID”:22},{"Id":12, “FolderID”:22}]
我有以下不同的数据源:(使用redux)

这是一个常量值

const documentsId = indexes.copyDocuments;
这是8,9,10的格式

我试图通过循环文档数组来实现它 用foreach

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

const data = [];

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

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

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

map所做的是从原始数组返回一个新数组,所以在您的示例中,我们有一个

[8, 9, 10]
我们用与使用
forEach
相同的方法映射它,它先传递项,然后传递索引

const newArray = [8, 9, 10].map(function (item, index) {
  return [item, index]
})
// [[8, 0], [9, 1], [10, 2]]
映射原型返回一个新数组,因此无需复制数组,也无需对其进行变异。这使映射原型不可变

const documentsId=[8,9,10]
/*不管你怎么得到你的folderId*/
常数folderId=22;
const mappedToObjectArray=documentsId.map(id=>({id,folderId}))
/*
如果您习惯es5,这可能看起来更熟悉
函数formatData(){
返回文档SID.map(函数(文档){
返回{
id:doc,
福尔德里德:福尔德里德
}
})
}
*/

log(mappedToObjectArray)
传递到
数据
数组中的内容是字符串,而您需要的是对象。而不是:

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

data.push({ Id: doc, FolderID: FolderId })
…和
数据
将是一个对象数组,而不是字符串

我还建议使用@JoeWarner建议的
map
作为构建阵列的更简洁的方法

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

也许可以尝试以下内容:
var tmp={};tmp.Id=单据Id;tmp.FolderId=doc.FolderId;数据推送(tmp)你想做的很简单。但能否提供有关阵列的更多详细信息。控制台什么是documentsId。我不确定您如何在下面的
数据中传递
FolderId
。push(
“Id”:${doc},“FolderId”:${FolderId}
。如果要将对象推送到数组中,可以使用
data.push({“Id”:`${doc}`,“FolderID”:`${FolderID}}
。数组0:50 1:49长度:2。当我尝试使用对象而不是数组时,它会说它未定义
const data = documentsId.map(doc => ({ Id: doc, FolderID: FolderId }))