重复迭代具有特定迭代次数的数组?

时间:2016-04-01 09:53:37

标签: javascript jquery loops

我从API请求JSONP格式的股票数据。响应是一个长度为38的数组。

我怎么能用一定数量的迭代重复迭代那个数组,即总共58次迭代:从索引0迭代到37再从索引0迭代到19?

(实际上,我想建立一个水平线的股票名称,如:打印所有38个股票名称一次,再次追加前20个股票名称。)

请参阅下面的代码。谢谢!

<!DOCTYPE html>
<html>
<head>
<style type='text/css'>
#gse-wrapper {overflow: hidden;}
.stocks {display: inline-block; width: 120px; text-align: center;}
#gse {animation-name: slide; animation-duration: 90s; animation-iteration-count: infinite; animation-timing-function: linear; white-space: nowrap;}
@keyframes slide {from {margin-left: 0px;} to {margin-left: -4560px;}}
</style>
</head>
<body>
<div id='gse-wrapper'><span id='gse'></span></div>
<script src='https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js'></script>
<script type='text/javascript'>

$(document).ready(function () {
$.getJSON("http://dev.kwayisi.org/apis/gse/live?callback=?", function (data) { // API request for stock data
console.log(data);
$.each(data, function (i, value) { // iterating JSON array
$("#gse").append("<div class='stocks'>" + value.name + "</div>");
});
});
});

</script>
</body>
</html>

5 个答案:

答案 0 :(得分:0)

使用类似:

    var i;
    for (i = 0; i < 37; i++) { 
        // do something with myArray[i]
    }
    for (i = 0; i < 19; i++) { 
        // do something with myArray[i]
    }

答案 1 :(得分:0)

  

使用for-loop并在单length

中提及for-loop或条件

$(document).ready(function() {
  $.getJSON("http://dev.kwayisi.org/apis/gse/live?callback=?", function(data) {
    for (var i = 0; i < 37; i++) {
      $("#gse").append("<div class='stocks'>" + data[i].name + "</div>");
    }
    $("#gse").append("<hr>");
    for (var i = 0; i < 20; i++) {
      $("#gse").append("<div class='stocks'>" + data[i].name + "</div>");
    }
  });
});
 #gse-wrapper {
   overflow: hidden;
 }
 .stocks {
   display: inline-block;
   width: 120px;
   text-align: center;
 }
 #gse {
   animation-name: slide;
   animation-duration: 90s;
   animation-iteration-count: infinite;
   animation-timing-function: linear;
   white-space: nowrap;
 }
 @keyframes slide {
   from {
     margin-left: 0px;
   }
   to {
     margin-left: -4560px;
   }
 }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
<div id='gse-wrapper'><span id='gse'></span>
</div>

答案 2 :(得分:0)

尝试使用外部变量的for循环,以获得最大的迭代次数 和另一个变量来跟踪你迭代的次数。将它与for循环中的检查结合起来,看看你是否完成了第一个循环,重新开始,并在你达到最大计数器时结束。 E.g;

var max = 58 // Your desired looping amount
var current = 0;

for(var y = 0; y < max; y++){
  // Logic Here - data[y];

  if(y >= data.length){
    y = 0;
  }

  if(current == max){break;}

  current++;
}

答案 3 :(得分:0)

你应该在javascript和模运算符%中使用for循环。 这个解决方案是在带有javascript数组的javascript中。 要将json数组转换为JavaScript,请使用:

 var array = JSON.parse(jsonArray);

如果l是数组的长度,n是首选的迭代次数,你可以使用类似的东西:

 for (x = 0; x < n; x++){
    array[x%l] // this is the element you can do stuff with
 }

答案 4 :(得分:0)

$.getJSON("http://dev.kwayisi.org/apis/gse/live?callback=?", function (data) {
    var data_slice = function(data, start, end) {
        var slice = data.slice(start, end);
        $.each(data, function (i, value) { // iterating JSON array
            $("#gse").append("<div class='stocks'>" + value.name + "</div>");
        });
    }
    data_slice(data, 0, 38);
    data_slice(data, 0, 20);
});