使用javascript和jquery排列数组元素

Mar*_*est 5 javascript arrays sorting jquery multidimensional-array

我正在尝试创建一个函数来安排表中的点,如图所示:

在此输入图像描述

我需要修改的代码是:

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];
}
Run Code Online (Sandbox Code Playgroud)

有什么建议?我怎样才能逐行安排......

请帮我这样做///

代码:http://jsfiddle.net/sYq9S/9/

Viv*_*ath 0

我认为你可以使用这样的东西:

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);
}
Run Code Online (Sandbox Code Playgroud)

这最终将根据 div 将它们分组为行topPosition。因此,任何带有 的内容都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;
    });
}
Run Code Online (Sandbox Code Playgroud)

这是小提琴