2013-08-29 62 views
1

我有一個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]]. 

非常感謝提前。

+0

你試過循環數組嗎? –

+0

@MorganWilde好神,沒有。我們有這個算法。只需使用[array.sort](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort)並讓JS引擎完成繁重的工作。 – Blazemonger

+0

@Blazemonger是否適用於他的情況?根據'[] [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]的形式存在。如果a中的第二個元素小於b中的第二個元素,比較函數只檢查這些元素的第二個元素並返回true。這允許sort()方法確定'外部'數組中的哪個'子數組'應該先到達。

你可以看到它的一個例子here

+0

我的數組實際上有10個元素,圖像順序是元素7,這將如何影響您剛發佈的代碼? –

+0

@BarryWatts - 只需將行更改爲讀取'return a [6] FixMaker

+0

謝謝,很好的幫助 –

2

你可以做一個簡單的排序:

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