可以在Javascript中的forEach方法中调用for循环吗?

可以在Javascript中的forEach方法中调用for循环吗?,javascript,arrays,for-loop,foreach-loop-container,Javascript,Arrays,For Loop,Foreach Loop Container,首先,我是一个完全的编码初学者,几周前就开始了,作为一个角色/智力挑战 我想知道为什么在这个简单的脚本中会得到一个空数组。我认为这与var“I”有关,但我找不到错误所在 function DivEsc() { var ssIn = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Input"); var ssOut = SpreadsheetApp.getActiveSpreadsheet().getSheetBy

首先,我是一个完全的编码初学者,几周前就开始了,作为一个角色/智力挑战

我想知道为什么在这个简单的脚本中会得到一个空数组。我认为这与var“I”有关,但我找不到错误所在

function DivEsc() {

var ssIn = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Input");
var ssOut = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Output");

var esc = ssIn.getRange(1,3).getValue(); //Escaños en reparto
var i = 0;
var arr = [400, 200,100,50];
var newArr = []

newArr = arr.forEach(num => {
   for (var i = 1; i <= esc; i++){
   return (num/i)
   //    newArr.push(num)
   }
   newArr.push(num/i)
   }
)
Logger.log(newArr)
}
c()函数{
var ssIn=SpreadsheetApp.getActiveSpreadsheet().getSheetByName(“输入”);
var ssOut=SpreadsheetApp.getActiveSpreadsheet().getSheetByName(“输出”);
var esc=ssIn.getRange(1,3.getValue();//Escaños en reparto
var i=0;
var-arr=[400200100,50];
var newArr=[]
newArr=arr.forEach(num=>{

对于(var i=1;iArray.prototype.forEach不返回值,
newArr
将因此变得未定义。JavaScript是一种动态语言,在这种语言中,可以重新分配值,即使它们的类型不同

此外,在for循环的第一次迭代中返回,这意味着只计算num/1的值;可能不是您想要的值

// newArr is now undefined!
newArr = arr.forEach(num => {
   for (var i = 1; i <= esc; i++){
   // If you return a value here, the loop will stop after the first round with i = 1!
   return (num/i)
   //    newArr.push(num)
   }
   newArr.push(num/i)
   }
)
如果您想了解更多信息以尝试实现算法的不同方法,请查看JavaScript的函数数组方法,例如和


另一方面:尝试使用编辑器/IDE为您处理格式化代码。在代码段中,格式化(例如forEach调用的结尾)使您很难对代码进行推理。

可能是因为您在推之前返回。内部循环的第一行是
return(num/i)
return
使函数返回(结束)。
forEach
不返回任何内容,这是赋值
newArr=arr.forEach(…)
newArr
设置为未定义。此外,您在
for
循环中执行
返回
,因此您永远不会到达
newArr.push
arr.forEach(num => {
   for(var i = 1; i <= esc; i++) {
     newArr.push(num / i);
   }
)