我很确定这是一个基本问题,但我在JavaScript中真的很新。我有一个任务是从他们出生年份的数组中创建一个人的年龄数组而不使用函数但只使用循环。
到目前为止,这是我的代码:
var yearsBorn = [1990, 1965, 1984, 1976, 1953, ];
var ages = [];
for (var i = 0; i > 5; i++) {
ages[i] = 2017 - yearsBorn[i];
}
你能否向我解释为什么它不起作用以及什么是正确的语法?
答案 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
,因为i
以0
开头,您检查的数字大于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);