Javascript 在另一个数组中存储array.foreach的结果

Javascript 在另一个数组中存储array.foreach的结果,javascript,Javascript,我有一个这样的代码示例: const iam=['dd','aaa','cc']; 异步函数bigTest(){ 异步函数详细信息(){ 常数arr=[]; 常量文件=[]; iam.forEach(异步(i)=>{ arr.push({ 名称:'测试', }); 文件推送(arr); 归还文件; }); } const result=等待详细信息(); 控制台日志(结果); } bigTest()Array.forEach始终返回未定义的。您正在查找Array.mapArray.forEac

我有一个这样的代码示例:

const iam=['dd','aaa','cc'];
异步函数bigTest(){
异步函数详细信息(){
常数arr=[];
常量文件=[];
iam.forEach(异步(i)=>{
arr.push({
名称:'测试',
});
文件推送(arr);
归还文件;
});
}
const result=等待详细信息();
控制台日志(结果);
}

bigTest()Array.forEach始终返回未定义的。您正在查找Array.map

Array.forEach始终返回未定义。您正在查找Array.map

您应该使用函数
map

由于您需要
async
声明,因此
map
函数中的数组包含承诺,因此您需要按如下方式解析它们:

Promise.all(files);
const iam=['dd','aaa','cc'];
异步函数bigTest(){
异步函数详细信息(){
const files=iam.map(异步(名称)=>{
返回{name};
});
返回承诺。所有(文件);
}
const result=等待详细信息();
控制台日志(结果);
}
bigTest()

。作为控制台包装{max height:100%!important;top:0;}
您应该使用函数
map

由于您需要
async
声明,因此
map
函数中的数组包含承诺,因此您需要按如下方式解析它们:

Promise.all(files);
const iam=['dd','aaa','cc'];
异步函数bigTest(){
异步函数详细信息(){
const files=iam.map(异步(名称)=>{
返回{name};
});
返回承诺。所有(文件);
}
const result=等待详细信息();
控制台日志(结果);
}
bigTest()

.as控制台包装{max height:100%!important;top:0;}
这些代码都不应该是异步的。去掉所有的异步/等待,您应该会没事。

这些代码都不应该是异步的。去掉所有的异步/等待,您应该会很好。

我认为,您真正想要做的是在forEach()之外使用返回

const iam=['dd','aaa','cc'];
异步函数bigTest(){
异步函数详细信息(){
常数arr=[];
常量文件=[];
iam.forEach(异步(i)=>{
arr.push({
名称:'测试',
});
文件推送(arr);
});
归还文件;
}
const result=等待详细信息();
控制台日志(结果);
}

bigTest()我认为,您真正想要做的是在forEach()之外使用return

const iam=['dd','aaa','cc'];
异步函数bigTest(){
异步函数详细信息(){
常数arr=[];
常量文件=[];
iam.forEach(异步(i)=>{
arr.push({
名称:'测试',
});
文件推送(arr);
});
归还文件;
}
const result=等待详细信息();
控制台日志(结果);
}

bigTest()我也用map试过,唯一的区别是在这种情况下它返回[[Promise{undefined},我也用map试过,唯一的区别是在这种情况下它返回[[Promise{undefined},我正在处理一个在相同结构中工作的代码,我需要等待,所以我只是发布了一个类似的示例,而不是整个示例code@brxnzaz这里需要异步声明吗
iam.forEach(async(i)=>{…}
?是的,我也需要它,因为我正在对每个元素进行处理,方法是调用一个需要时间才能返回结果的函数。我完全忘记了promise.all。谢谢,它现在对我有效。你的示例对我很有效,但当我在自己的代码(包括将数据推送到array.map循环中)上尝试时,我得到了一个输出t[1,2,3]我正在处理一个在相同结构中工作的代码,我需要等待,所以我只是发布了一个类似的示例,而不是整个示例code@brxnzaz这里需要异步声明吗
iam.forEach(async(i)=>{…}
?是的,我也需要它,因为我正在对每个元素进行处理,方法是调用一个需要时间才能返回结果的函数。我完全忘记了promise.all。谢谢,它现在对我有效。你的示例对我很有效,但当我在自己的代码(包括将数据推送到array.map循环中)上尝试时,我得到了一个输出t[1,2,3]我正在处理一个在同一个结构中工作的代码,我需要这个等待,所以我只是发布了一个类似的示例,而不是整个代码我正在处理一个在同一个结构中工作的代码,我需要这个等待,所以我只是发布了一个类似的示例,而不是整个代码