我正在尝试创建一个函数来排列表格中的点,如图所示:
我需要修改的代码是:
var rowsCount = 7;
var heightTable = 700;
var rowHeight = 100;
//an array with divs with elements, every element has a top and left position
var arrayOfDivs = [({topPosition : 99, leftPosition: 100}),({topPosition : 150, leftPosition: 400}),({topPosition : 578, leftPosition: 10})];
//so here create a function that will create arrays = rowCount, so here we will need 7 arrays and arrange elements from arrayOfDivs into new arrays
function arrangeInNewArrays (rowsCont,heightTable,rowHeight) {
var j=0;
for i=0 {
if (arrayOfDivs.topPosition[0] > rowHeight*j < rowHeight){
var array+j = array+j+arrayOfDivs[i];
}else {
i++,j++
}
}
print arrayofDivs[i];
}
有什么建议吗?如何按行排列点...
请帮我做一下///
最佳答案
我认为你可以使用这样的东西:
var ROW_HEIGHT = 100; //assume 100px, but you can change this
var rowsCount = 7;
var rows = [];
for(var i = 0; i < rowsCount; i++) {
rows[i] = [];
}
for(var i = 0; i < arrayOfDivs.length; i++) {
var position = arrayOfDivs[i];
//The assumption is that the table starts at position 0. If not, you will
//have to subtract the table's top position from topPosition
var rowNumber = Math.floor(position.topPosition / ROW_HEIGHT);
rows[rowNumber].push(position);
}
这将最终根据 topPosition
将 div 分组到行中.所以任何与0 <= topPosition < 100
将在row[0]
(第一行),任何带有 100 <= topPosition < 200
的东西将在row[1]
(第二行)等等。
然后您可以迭代这些并根据 leftPosition
定位它们.
这不一定会给你 7
行,因为它取决于 topPosition
每个元素。所以如果你没有任何有 topPosition
的东西这样 600 <= topPosition < 600
那么第七行就没有任何东西了。
如果你想按leftPosition
排序在每一行中,您可以这样做:
for(var i = 0; i < rowsCount; i++) {
rows[i].sort(function(a, b) {
return a.leftPosition - b.leftPosition;
});
}
关于javascript - 使用 javascript 和 jquery 排列数组元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17861311/