javascript循环数组中的项
javascript looping items in array
我现在脑子里一片空白。。我有一系列的月份:
var month_array = new Array();
month_array[0] = "January";
month_array[1] = "February";
month_array[2] = "March";
month_array[3] = "April";
month_array[4] = "May";
month_array[5] = "June";
month_array[6] = "July";
month_array[7] = "August";
month_array[8] = "September";
month_array[9] = "October";
month_array[10] = "November";
month_array[11] = "December";
我正在尝试将标记输出为:
<ul>
<li> January & Feburary </li>
<li> March & April </li>
etc.
</ul>
循环遍历数组不是问题,但我现在想不出的是一种优雅的方法,可以循环遍历数组中的每2个项目。。
我可以使用下面的方法来按照我需要的方式格式化数组,但我认为这不是一个好的方向,因为它是多余的。
var months = month_array.map(function(elem,i,arr){
return [elem, (i+1<arr.length) ? arr[i+1] : null];
}).filter(function(elem,i){
return (i%2);
});
有人知道按数组中的2个项目分组的最佳方法吗?
有时候.for loop
就足够了!为什么不在循环month_array[++i];
中尝试这个呢?或者在.for
语句中简单而更好的i += 2
:
演示1:
var month_array = new Array();
var cList = $('ul.mylist')
month_array[0] = "January";
month_array[1] = "February";
month_array[2] = "March";
month_array[3] = "April";
month_array[4] = "May";
month_array[5] = "June";
month_array[6] = "July";
month_array[7] = "August";
month_array[8] = "September";
month_array[9] = "October";
month_array[10] = "November";
month_array[11] = "December";
for (var i = 0, l = month_array.length; i < l; i+=2) {
var final = month_array[i] + " & " + month_array[i + 1];
var li = $('<li/>').html(final).appendTo(cList);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="mylist">
</ul>
演示2-选择演示1更好!:var month_array = new Array();
var cList = $('ul.mylist')
month_array[0] = "January";
month_array[1] = "February";
month_array[2] = "March";
month_array[3] = "April";
month_array[4] = "May";
month_array[5] = "June";
month_array[6] = "July";
month_array[7] = "August";
month_array[8] = "September";
month_array[9] = "October";
month_array[10] = "November";
month_array[11] = "December";
for (var i = 0, l = month_array.length; i < l; i++) {
var final = month_array[i] + " & " + month_array[++i];
var li = $('<li/>').html(final).appendTo(cList);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul class="mylist">
</ul>
虽然我认为像@Regent在评论中建议的那样,只使用常规for
循环要容易得多,但您可以使用这样的array.reduce
:
var months = month_array.reduce(function (pre, curr, idx, arr) {
if (!(idx % 2)) {
pre.push([curr, arr[idx + 1]]);
}
return pre;
}, []);
console.log(months);
这将为您提供一个包含六个阵列的阵列,每个阵列包含两个月,从["January","February"]
开始
注意:如果用奇数个项对数组进行分组,则缩减数组中的最后一个项将是[lastItemInSourceArray, undefined]
。如果需要,您可以根据实际需要添加逻辑来处理该情况。在12
个月的情况下,这显然不是问题。
编辑,更新。保留原始数组。
尝试
v3
var ul = $("<ul>");
var month_array = ["January", "February", "March", "April"
, "May", "June", "July", "August"
, "September", "October", "November", "December"];
(function arr(m, n) {
if (ul.children("li").size() < m.length / 2) {
ul.append("<li>"
+ m.slice(n, n + 2).join(" & ")
+ "</li>");
n = n + 2;
arr(m, n)
} else {
$("body").append(ul);
console.log(month_array)
}
}(month_array, 0));
jsfiddlehttp://jsfiddle.net/guest271314/orrje6qo/4/
你正在寻找的答案
<body>
<div class="listDiv">
<ul></ul>
</div>
</body>
var month_array = [];
month_array[0] = "January";
month_array[1] = "February";
month_array[2] = "March";
month_array[3] = "April";
month_array[4] = "May";
month_array[5] = "June";
month_array[6] = "July";
month_array[7] = "August";
month_array[8] = "September";
month_array[9] = "October";
month_array[10] = "November";
month_array[11] = "December";
var array=[];
for(var i=1; i<month_array.length; ++i) {
array[i] = '<li>' + month_array[i-1] + ' & ' +month_array[i] + '</li>';
}
$('.listDiv ul').append(array);
http://jsfiddle.net/raeegzrb/
还签出输出标记
相关文章:
- javascript:数组循环
- 如何将数组循环到JSON代码中
- 而与数组循环
- JavaScript 数组/循环不起作用
- AJAX在数组循环中调用,只在上一次完成后调用next
- 数组循环以获取单个值
- JavaScript数组循环
- Javascript 2D数组循环停止
- 通过Javascript中的JSON数组循环
- 为什么以下 forEach 数组循环未返回未定义
- 如何在数组循环中过滤数据
- 如何在数组循环 222 中过滤数据
- 数组循环以确定范围平均值
- 对象的数组循环
- 对象键及其值的数组循环
- 虽然的缺点!未定义的数组循环
- 数组循环导致无限循环
- 数组循环 - 处理下拉列表中的空值
- 在 Node 中连接数组循环.js glob 结果
- JavaScript 图像数组循环