我从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>
答案 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);
});