对于我使用网格布局的网站。我想要的是将每行的所有项目存储在一行中。
我有一个调用arrWrap = [];
的整体数组。现在我想为每一行创建一个新数组,每次我存储4个项目。因此,应该在连续的第三个项目之后创建一个新数组。
我如何实现这一目标? 我在这个项目中使用Javascript。
var arrPos = [];
for (var i = 0; i < elements.length; ++i) {
arrPos[i] = i;
console.dir(arrPos[i]);
if (arrPos[i] > 3) {
alert(arrPos[i]);
};
}
答案 0 :(得分:1)
var arrWrap = [];
var steps = 4;
for (var i = 0; i < elements.length; i=i+steps) {
arrWrap.push(elements.slice(i,i+steps));
}
答案 1 :(得分:0)
请使用以下代码:
<a href="javascript:void(0);" onclick="window.location='http://merseytribe.co.uk/membership-register.html'" title="Sign up today for one free month trial at our gold club">Join</a>
答案 2 :(得分:0)
此提案以Array.prototype.reduce
为特色,并提供两种解决方案:
dataGroupedA
[ [ 0, 1, 2 ], [ 3, 4, 5 ], [ 6, 7, 8 ], [ 9, 10, 11 ], [ 12, 13, 14 ] ]
dataGroupedB
[ [ 0, 5, 10 ], [ 1, 6, 11 ], [ 2, 7, 12 ], [ 3, 8, 13 ], [ 4, 9, 14 ] ]
index
的计算是重要的部分。其余的是标准的默认赋值并推送实际元素。
var data = Array.apply(Array, { length: 15 }).map(function (_, i) { return i; }),
dataGroupedA = data.reduce(function (r, a, i) {
var index = i / 3 | 0;
r[index] = r[index] || [];
r[index].push(a);
return r;
}, []),
dataGroupedB = data.reduce(function (r, a, i) {
var index = i % 5;
r[index] = r[index] || [];
r[index].push(a);
return r;
}, []);
document.write('<pre>' + JSON.stringify(data, 0, 4) + '</pre>');
document.write('<pre>' + JSON.stringify(dataGroupedA, 0, 4) + '</pre>');
document.write('<pre>' + JSON.stringify(dataGroupedB, 0, 4) + '</pre>');
&#13;