我有一个json数组。现在我需要在我的UI上显示它以相反的顺序仅显示最后5个json对象。如果数组的长度小于5,则应以相反的顺序显示所有相同的内容。
如果长度大于5,我现在成功显示了最后5个。但是如果数组大小小于5,我的逻辑就不起作用了。我们如何解决这个问题。有人可以帮忙吗
setStates
答案 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 + ' ' + response[i].amount + ' ' + 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)
这是解决方案之一。我已经更新了原始数组,您可以保留原始数组:
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 + ' ' + response[i].amount + ' ' + response[i].description;
}
&#13;