2017-07-31 26 views
1

我有一個json數組。現在我需要顯示在我的用戶界面上,以便它只顯示最後5個json對象的倒序。如果數組的長度小於5,它應該以相反的順序顯示所有相同的內容。問題for循環迭代最後5個對象的順序相反

現在我成功地顯示了最後5個,如果長度大於5.但是,如果數組大小小於5,我的邏輯不起作用。我們如何解決這個問題。有人可以幫助

for (var i = response.length - 1 ; i >= response.length-5 ; --i) { 
     var date = new Date(response[i].transactiondate); 
     var year = date.getFullYear(); 
     var month = date.getMonth() + 1; 
     var dt = date.getDate(); 
     response[i].transactiondate = dt + '-' + month + '-' + year; 
     outputdata += '<br>' + response[i].transactiondate + '&nbsp;' + response[i].amount + '&nbsp;' + response[i].description; 
} 
+0

看看這個,https://stackoverflow.com/a/6473869/4921471 –

+0

代替試圖建立一個反向循環,只是扭轉你的數組。 'array.reverse()' –

+0

你可以使條件'i> = response.length-5 && i> = 0' – Dij

回答

1
Add a condition for your case 
var start = (response.length >=5) ? response.length-5 : 0; 

for (var i = response.length - 1 ; i >= start ; --i) { 
     var date = new Date(response[i].transactiondate); 
     var year = date.getFullYear(); 
     var month = date.getMonth() + 1; 
     var dt = date.getDate(); 
     response[i].transactiondate = dt + '-' + month + '-' + year; 
     outputdata += '<br>' + response[i].transactiondate + '&nbsp;' + response[i].amount + '&nbsp;' + response[i].description; 
} 
+0

謝謝selva ... – user7350714

1

您可以檢查i是否大於或等於零。

for (var i = response.length - 1; i >= response.length - 5 && i >= 0; --i) { 

或使用變量下界

var min = response.length > 5 ? response.length - 5 : 0; 

for (var i = response.length - 1; i >= min; --i) { 
1

使用reverse()splice()函數分別

response=response.reverse(); 
response=response.splice(5); 

現在,這個響應對象將包含以相反的順序最後五個記錄。現在你只需要重複這一點。

for(i=0;i<response.lenth;i++) 
{ 
    //Your code here 
} 
0

這是解決方案之一。我已經更新了原有的陣列,在那裏你可以保持原有的陣列,因爲它是:

response = response.slice(-5).reverse(); 
 

 
for (var i = 0 ; i < response.length ; i++) { 
 
\t var date = new Date(response[i].transactiondate); 
 
     var year = date.getFullYear(); 
 
     var month = date.getMonth() + 1; 
 
     var dt = date.getDate(); 
 
     response[i].transactiondate = dt + '-' + month + '-' + year; 
 
     outputdata += '<br>' + response[i].transactiondate + '&nbsp;' + response[i].amount + '&nbsp;' + response[i].description; 
 
}