Javascript 使用循环将计算结果从一个数组推送到另一个数组

Javascript 使用循环将计算结果从一个数组推送到另一个数组,javascript,arrays,function,for-loop,while-loop,Javascript,Arrays,Function,For Loop,While Loop,在使用一个函数来计算结果之后,我试图找出如何将结果从数组推送到空数组,使用for循环和另一个while循环,但我不明白我做错了什么。这是完整的JavaScript课程2021的一部分:从零到专家!在我的头上。如果有人能帮我理解这一点,我将不胜感激 function percentageOfWorld1(population) { const worldPopulation = 7900; return (population / worldPopulation) * 100; } le

在使用一个函数来计算结果之后,我试图找出如何将结果从数组推送到空数组,使用for循环和另一个while循环,但我不明白我做错了什么。这是完整的JavaScript课程2021的一部分:从零到专家!在我的头上。如果有人能帮我理解这一点,我将不胜感激

function percentageOfWorld1(population) {
  const worldPopulation = 7900;
  return (population / worldPopulation) * 100;
}

let populations = [1441, 4, 6, 8];
const percentages2 = [];
const percentages3 = [];

while (populations < populations.length) {
  populations++;
  percentages2.push(percentageOfWorld1(populations));
}

for (let i = 0; i < populations.length; i++) {
  percentages3.push(percentageOfWorld1(i));
}

console.log(percentages2);
console.log(percentages3);
函数世界百分比1(人口){
康斯特世界人口=7900;
返回(人口/世界人口)*100;
}
让总体=[1441,4,6,8];
常量百分比2=[];
常量百分比3=[];
而(总体<总体长度){
人口++;
百分比2.推动(世界人口百分比1);
}
for(设i=0;i
预期结果是将人口数组中的4个数字分别放入各自的数组中,计算出世界人口的百分比

我得到的第一个百分之一的结果3:script.js:179(4)[0,0.012658227848101267,0.025316455696202535,0.0379746835443038]

我得到的percentages2的结果是一个空数组。

来自您的代码:

let populations = [1441, 4, 6, 8];
populations++;
++
是用于数字而不是数组的运算符。要对每个数组元素进行操作,需要对它们进行迭代/“循环”。此外:

percentages2.push(percentageOfWorld1(populations));
populations
这里是一个数组,而
percentageOfWorld1
函数需要一个数字。您不应该提供
populations[i]
元素吗?了解更多关于。使用while循环

let i = 0;
while(i < populations.length) {
    percentages2.push(percentageOfWorld1(populations[i]));
    i++;
}
从您的代码:

let populations = [1441, 4, 6, 8];
populations++;
++
是用于数字而不是数组的运算符。要对每个数组元素进行操作,需要对它们进行迭代/“循环”。此外:

percentages2.push(percentageOfWorld1(populations));
populations
这里是一个数组,而
percentageOfWorld1
函数需要一个数字。您不应该提供
populations[i]
元素吗?了解更多关于。使用while循环

let i = 0;
while(i < populations.length) {
    percentages2.push(percentageOfWorld1(populations[i]));
    i++;
}

如果您希望在两个循环中得到相同的结果,那么您的错误是,您正在查找的总体(数组)是否小于其长度。 您需要声明一个新的int变量,然后将+1添加到int而不是数组中

此外,for循环在循环内的代码完成后添加+1,因此在while循环中,您需要在末尾添加+1。查看我添加的代码片段

函数世界百分比1(人口){
康斯特世界人口=7900;
返回(人口/世界人口)*100;
}
让总体=[1441,4,6,8];
常量百分比2=[];
常量百分比3=[];
设n=0;
而(n<种群长度){
百分比2.推动(世界百分比1(人口[n]);
n++;
}
for(设i=0;i控制台日志(百分比3)如果您希望在两个循环中得到相同的结果,那么您的错误是,您正在查找的填充(数组)是否小于其长度。
您需要声明一个新的int变量,然后将+1添加到int而不是数组中

此外,for循环在循环内的代码完成后添加+1,因此在while循环中,您需要在末尾添加+1。查看我添加的代码片段

函数世界百分比1(人口){
康斯特世界人口=7900;
返回(人口/世界人口)*100;
}
让总体=[1441,4,6,8];
常量百分比2=[];
常量百分比3=[];
设n=0;
而(n<种群长度){
百分比2.推动(世界百分比1(人口[n]);
n++;
}
for(设i=0;i控制台日志(百分比3)我明白了,谢谢,但是为什么要计算每个数组中的第一个结果为0,这也是我无法理解的。因为,你从值0开始,因此如果你将0传递给你的函数,结果是0/7900*100,结果总是0:)现在我明白你的意思了,我也有点困惑tbh,那么你需要传递你声明的索引的元素,所以你传递的不是n或i,而是populations[n或i],这意味着你传递的是populations的n-索引检查我的代码片段,我编辑了代码我在我的答案末尾还添加了另一种更紧凑、更好的for循环方式。我明白了,谢谢,但是为什么它要计算每个数组中的第一个结果为0,这也是我无法理解的。因为,你从值0开始,因此如果你将0传递给你的函数,结果是0/7900*100,结果总是0:)现在我明白你的意思了,我也有点困惑tbh,那么你需要传递你声明的索引的元素,所以你传递的不是n或i,而是populations[n或i],这意味着你传递的是populations的n-索引检查我的代码片段,我编辑了代码,我在我的答案末尾还添加了另一种更紧凑、更好的for循环方式。谢谢你的回答,让我感到非常高兴,我需要花时间去理解这一点。谢谢你的回复,我需要花时间去理解这一点。