长度低于5时的数组问题

时间:2018-03-13 07:25:47

标签: javascript

到目前为止,通过使用下面的代码列出数组中的最后五个项目,但是当数组长度仅为1时,它开始导致问题。虽然数组中只有一个项目,但我可以对它进行一些调整吗?所以它不会循环吗?

$(function() {
  $.getJSON("#myURL", function(getStressTestErrorInfo2) {
    if (getStressTestErrorInfo2.length >= 1) {
      var len = getStressTestErrorInfo2.length - 5;
      var data = getStressTestErrorInfo2;
      var txt = "";
      if (data.length - 1 !== undefined) {
        for (var i = len; i < len + 5; i++) {
          // dynamically generating a table-row for appending in the table.
          txt += "<tr><td>" + data[i].AlarmNo + "</td><td>" + data[i].AlarmCnt + "</td><td>" + data[i].StresstestId + "</td><td>" + data[i].StresstestRunId + "</td><td>" + data[i].Name + "</td><td>" + data[i].StackTrace + "</td><td>" + data[i].Timestamp + "</td></tr>";
        }
        if (txt != "") {
          // #table is the selector for the table element in the html
          $("#listErrorsTest2").append(txt);
        }
      }
    };
  });
});

3 个答案:

答案 0 :(得分:2)

更改此行:

if (getStressTestErrorInfo2.length >= 1) {

为:

if (getStressTestErrorInfo2.length >= 5) {

这样,如果长度低于5,它就不会启动该功能。

答案 1 :(得分:2)

您遇到的问题是,无论数组的大小如何,您都需要使用大小并将5减去它。允许你采取数组的最后5个单元格...足够长。如果长度低于5,则索引将为负数。

现在,如果您想获得较小数组的值,则无法简单地更新条件。

如果索引是否定的,您可以简单地将索引设置为0:

var len = getStressTestErrorInfo2.length - 5;
if (len < 0) len = 0; //Array with less than 5 values.

然后循环直到你到达终点

while(len < getStressTestErrorInfo2.length){ ... }

答案 2 :(得分:1)

我在乞讨时的做法有一些(愚蠢的)缺陷。我没有显示最后5个项目,而是颠倒了数组并列出了前五个并添加了条件

if (len > 5) len = 5;

所以它成功了。

$(function() {
  $.getJSON("#myURL", function(getStressTestErrorInfo0) {
    if (getStressTestErrorInfo0.length >= 1) {

      var data = getStressTestErrorInfo0;
      /*Function to reverse the array*/
      function reverseArr(input) {
        var ret = new Array;
        for (var i = input.length - 1; i >= 0; i--) {
          ret.push(input[i]);
        }
        return ret;
      }
      var reverseData = reverseArr(data);
      var len = getStressTestErrorInfo0.length;
      var data = getStressTestErrorInfo0;
      var txt = "";
      if (len > 0) {
        if (len > 5) len = 5;
        for (var i = 0; i < len; i++) {
          // dynamically generating a table-row for appending in the table.
          txt += "<tr><td>" + reverseData[i].AlarmNo + "</td><td>" + reverseData[i].AlarmCnt + "</td><td>" + reverseData[i].StresstestId + "</td><td>" + reverseData[i].StresstestRunId + "</td><td>" + reverseData[i].Name + "</td><td>" + reverseData[i].StackTrace + "</td><td>" + reverseData[i].Timestamp + "</td></tr>";
        }
        if (txt != "") {
          //selector for the table element in the html
          $("#listErrors").append(txt);
        }
      }
    };
  });
});