function sort_rooms_by_position(list){ return list.sort(function(a,b){ return compare_rect_position(a.rect, b.rect) }) } function sort_rects_by_position(list){ return list.sort(compare_rect_position) } function compare_rect_position(a,b){ if (a.x.a < b.x.a) { return -1 } if (a.x.a > b.x.a) { return 1 } if (a.y.a < b.y.a) { return -1 } if (a.y.a > b.y.a) { return 1 } return 0 } function sort_rects_by_area(list){ return list.map(function(r){ return [r.area(), r] }).sort(function(a,b){ if (a[0] < b[0]) { return 1 } if (a[0] > b[0]) { return -1 } return 0 }).map(function(r){ return r[1] }) }