我必须在循环模式下重复一个数组。这样:
A,B; C; d; E,A,B; C; d; E,A,B; C; d; E,A,B; C; d; E,A,B; C; d; E,A,B; C; d; E,A,B; C; d; ë
var a = "A;B;C;D;E;";
var b = a.split(';');
for(var i = 0; i < b.length; i++)
{
$('#ul').append('<li>'+ b[i] +'</li>');
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<ul id="ul"></ul>
&#13;
但我不能重复。我想了解使用的方法因为我真正的sopo并创建一个带有班次的日历。实际上,一旦设置了开始日期,就必须在日历上重复数组。例如:
array =(A,B,C,D,E):
我希望你能得到这个想法,并且对我有一些建议。
谢谢
示例php脚本
$data = '03/10/2014';
$turni = array('sera','pomeriggio','Mattina','Notte','Riposo');
$n_g_mesi = array(1=>31,28,31,30,31,30,31,31,30,31,30,31);
list($gg,$mm,$aa) = explode('/', $data);
$gg = (int)$gg;
$mm = (int)$mm;
$n_g_q_mese = $n_g_mesi[$mm];
$numero_turni = 10;
$n = count($turni);
for($i=0; $i<$numero_turni; $i++){
echo $data.' '.$turni[$i%$n]."<br />\n";
$gg = $gg%$n_g_q_mese+1;
if($gg==1){
$mm = $mm%12+1;
if($mm==3 && $aa%4==0 && $n_g_q_mese==28){ // se l'anno è bisestile
$mm = 2;
$gg = $n_g_q_mese = 29;
}
else{
$n_g_q_mese = $n_g_mesi[$mm];
if($mm==1)
$aa++;
}
}
$data = str_pad($gg,2,'0',STR_PAD_LEFT).'/'.str_pad($mm,2,'0',STR_PAD_LEFT).'/'.$aa;
}
&#13;
答案 0 :(得分:2)
如果您需要多次重复,而不是多次循环
嵌套循环
var b = ["A", "B", "C", "D", "E"];
for(var i=0;i<3;i++) {
for(var j=0;j<b.length;j++) {
console.log(b[j]);
}
}
或循环次数并根据长度或数组使用模数。
var b = ["A", "B", "C", "D", "E"];
for(var i=0;i<20;i++) {
console.log(b[i%b.length]);
}
答案 1 :(得分:1)
实现这一目标的最简单方法是使用嵌套循环
var a = "A;B;C;D;E";
var b = a.split(';');
var counter = 3; // number of iterations
for (var j = 0; j < counter; j++) {
for(var i = 0; i < b.length; i++) {
$('#ul').append('<li>'+ b[i] +'</li>');
}
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<ul id="ul"></ul>
答案 2 :(得分:1)
var a = "A;B;C;D;E";
var b = a.split(';');
for (var c = 0; c < 5; c++) {
for(var i = 0; i < b.length; i++)
{
$('#ul').append('<li>'+ b[i] +'</li>');
}
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<ul id="ul"></ul>
只需添加一个嵌套循环。将5更改为您希望循环的次数。
答案 3 :(得分:0)
var a = "A;B;C;D;E;";
var b = a.split(';');
var times=5;
for(var i = 0; i < b.length; i++)
{
$('#ul').append('<li>'+ b[i] +'</li>');
if(i==4 && times>0) // 4 here otherwise use b.length as in limiting array
{
i=0;
times--;
}
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<ul id="ul" style="list-style:none"></ul>
&#13;
答案 4 :(得分:0)
您可以在map
的集合上使用modulo和#ul
。
ARRAY[DATE % ARRAY.length]
将返回数组中的下一个序列,并在它到达结束时从0开始。
在下面的示例中,我使用idx来确定字母,但您可以从ul
对象中的某个标识符中提取它。
var a = "A;B;C;D;E";
var b = a.split(';');
array_of_uls.map(function(ul, idx)
{
ul.append('<li>'+ b[idx % b.length] +'</li>');
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<ul id="ul"></ul>
答案 5 :(得分:0)
我会按照以下方式完成这项工作;
var str = "A;B;C;D;E;";
myList.appendChild(str.repeat(5)
.split(";")
.slice(0,-1)
.reduce((frag,text) => {var myLi = document.createElement("li");
myLi.textContent = text;
frag.appendChild(myLi);
return frag;
}, document.createDocumentFragment()));
<ul id="myList"></ul>