在循环中以相反的顺序迭代最后5个对象时出现问题

时间:2017-07-31 08:23:33

标签: javascript arrays json

我有一个json数组。现在我需要在我的UI上显示它以相反的顺序仅显示最后5个json对象。如果数组的长度小于5,则应以相反的顺序显示所有相同的内容。

如果长度大于5,我现在成功显示了最后5个。但是如果数组大小小于5,我的逻辑就不起作用了。我们如何解决这个问题。有人可以帮忙吗

setStates

4 个答案:

答案 0 :(得分: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 :(得分: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;
}

答案 2 :(得分:1)

分别使用reverse()splice()个功能

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

现在,此响应对象将以相反的顺序包含最后五个记录。现在你只需要迭代这个。

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

答案 3 :(得分:0)

这是解决方案之一。我已经更新了原始数组,您可以保留原始数组:

&#13;
&#13;
response = response.slice(-5).reverse();

for (var i = 0 ; i < response.length ; 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;
}
&#13;
&#13;
&#13;