通过数组元素重新排列二维数组

时间:2013-08-29 13:27:43

标签: jquery arrays sorting

我有一个2D数组,其结构如下:

image_arrary[[image1.jpg, 1][image2.jpg, 2][image3.jpg, 3]]

内部数组元素是image_name和image_order

用户可以单击一个按钮,这将改变图像的顺序,所以点击后数组看起来像这样

image_arrary[[image1.jpg, 1][image2.jpg, 3][image3.jpg, 2]]

如何重新排列数组,以便image_order对数组进行排序,使其看起来像这样?

image_arrary[[image1.jpg, 1][image3.jpg, 2][image2.jpg, 3]].

非常感谢提前。

2 个答案:

答案 0 :(得分:2)

你可以做一个简单的排序:

image_array.sort(function(a, b) {
   return a[1] - b[1];
}) 

答案 1 :(得分:1)

JavaScript中的数组有sort()方法,可以使用可选参数;此参数是一个函数,您可以在其中定义一些自定义比较代码,以帮助sort()方法确定哪个数组元素为“更大”。因此,对于您的示例,您可以执行以下操作:

var inputArray = [
    ['image1.jpg', 1],
    ['image2.jpg', 3],
    ['image3.jpg', 2]
];

inputArray.sort(function(a, b) {
    return a[1] - b[1];
});

/* inputArray is now sorted /*

在此示例中,“比较函数”的ab参数将是“外部”数组的元素。由于您有一个数组数组,ab将是['image1.jpg', 1]形式的数组。 compare函数只检查这些元素的第二个元素,如果a中的第二个元素小于b中的第二个元素,则返回true。这允许sort()方法确定“外部”数组中的哪个“子数组”应该首先出现。

您可以看到它的一个示例here