在JavaScript中使用另一个循环创建一个数组

时间:2017-06-15 19:42:03

标签: javascript arrays loops

我很确定这是一个基本问题,但我在JavaScript中真的很新。我有一个任务是从他们出生年份的数组中创建一个人的年龄数组而不使用函数但只使用循环。

到目前为止,这是我的代码:

   var yearsBorn = [1990, 1965, 1984, 1976, 1953, ];
    var ages = [];
    for (var i = 0; i > 5; i++) {
        ages[i] = 2017 - yearsBorn[i];
}

你能否向我解释为什么它不起作用以及什么是正确的语法?

6 个答案:

答案 0 :(得分:2)

for (var i = 0; i > 5; i++) {

只要我更大,这就会迭代5.当我从0开始时,它不会迭代。做:

for (var i = 0; i<yerasBorn.length; i++) {

答案 1 :(得分:1)

因为循环永远不会执行。尝试:

 for (var i = 0; i < 5; i++) {
    ages[i] = 2016 - yerasBorn[i];
 }

答案 2 :(得分:1)

您需要正确检查for循环的条件部分。之前的检查从未true,因为i0开头,您检查的数字大于5

i < yearsBorn.length

var yearsBorn = [1990, 1965, 1984, 1976, 1953],
    ages = [];

for (var i = 0; i < yearsBorn.length; i++) {
    ages[i] = 2016 - yearsBorn[i];
}

console.log(ages);

您可以使用Array#map代替for循环:

  

map() 方法创建一个新数组,其结果是在调用数组中的每个元素上调用提供的函数。

var yearsBorn = [1990, 1965, 1984, 1976, 1953],
    ages = yearsBorn.map(function (year) {
        return 2016 - year;
    });

console.log(ages);

答案 3 :(得分:1)

这是正确的语法

 var yerasBorn = [1990, 1965, 1984, 1976, 1953 ];
 var ages = [];
 for (var i = 0; i < yerasBorn.length; i++) {
    ages[i] = 2016 - yerasBorn[i];
 }

yerasBorn.length是数组的长度
i < yerasBorn.length所以循环运行直到达到数组内的最大元素数量 您在var yerasBorn = [1990, 1965, 1984, 1976, 1953];

中还有一个额外的逗号

答案 4 :(得分:0)

好的,这是一个愚蠢的错误 循环中的条件是错误的。

而不是

(var i = 0; i > 5; i++) 

应该是

(var i = 0; i < 5; i++)

答案 5 :(得分:0)

我会通过创建当前年份作为变量来使其更通用,以便年龄更新,

var currentYear = new Date().getFullYear();
var yearsBorn = [1990, 1965, 1984, 1976, 1953],
    ages = [];

for (var i = 0; i < yearsBorn.length; i++) {
    ages[i] = currentYear - yearsBorn[i];
}

console.log(ages);