2016-04-01 16 views
0

JSONP形式の在庫データをAPIからリクエストしています。応答は、長さが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> 
+3

'for-loop'の何が問題なのですか? – Rayon

答えて

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); 
}); 
を は使用し、JavaScriptにあなたのJSON配列を変換するには
+0

最初の編集はうまくいきました。 – chiefr

+0

私は 'data_slice'関数を作成したので、' $ .each'ループを2回書く必要はありません。 – firasd

+0

ありがとうございました。 – chiefr

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] 
    } 
+0

注文が正しい場合は、モジュロを使用して1つのループで実行することもできます: 'for(i = 0; i <58; i ++){// myArray [i%38]}で何かを実行してください ' –

0

使用for-loopとシングル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>

lengthや条件に言及
0

最大限の反復のために外部変数を持つforループを試します。 と反復回数を記録する別の変数を使用してください。これをforループ内のチェックと組み合わせて、最初のループが終了したかどうかを確認し、再度開始して、最大カウンタに達したときに終了します。例えば;

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++; 
} 
+0

ありがとう。私はあなたの解決策を得ることができませんでした。コンソールは、xが定義されていないと私に言っています – chiefr

+0

私の悪い、それは解決策を作成している間、エラーでした。 'x'を' max'に変更してください – Lewis

0

javascriptのforループとモジュロ演算子%を使用する必要があります。 このソリューションはjavascript配列のjavascriptにあります。 lはあなたの配列の長さであり、nは繰り返しの好ましい数がある場合は、このようなものを使用でき、

var array = JSON.parse(jsonArray); 

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

しかし '$ .getJSON' ...? – Rayon