2017-06-15 43 views
-2

我很確定這是一個基本問題,但我真的是JavaScript新手。我有一項任務,可以從一組出生年份的數組中創建一個人的年齡數組,而無需使用函數,但只能使用循環。在JavaScript中使用循環創建另一個數組

這是我到目前爲止的代碼:

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

能否請您給我解釋爲什麼它不工作的,什麼是正確的語法?

+0

'var i = 0;我> 5;'那麼我什麼時候會超過5? – jdmdevdotnet

回答

1

因爲循環永遠不會執行。請嘗試:

for (var i = 0; i < 5; i++) { 
    ages[i] = 2016 - yerasBorn[i]; 
} 
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);

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

此迭代只要我更大5.如我以0開始,它不進行迭代。這樣做:

for (var i = 0; i<yerasBorn.length; i++) { 
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];

0

好吧,這是一個愚蠢的錯誤。
循環中的條件是錯誤的。

,而不是

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

應該

(var i = 0; i < 5; i++) 
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);

相關問題