Elimizde çok boyutlu (multi dimensional) bir javascript array'i olduğunu düşünelim. Yapmak istediğimiz ise bu array'ın itemlarını belli bir kolon index'ıne göre sıralamak.
Bu işlem için kullanabileceğiniz helperı ve örnek uygulamasını aşağıda bulabilirsiniz.
if( typeof ArrayHelper == 'undefined' ) {
var ArrayHelper = {};
}
ArrayHelper = {
Sort: function(array, columnIndex, orderby) {
if (array.length == 0)
if (array.length == 0)
return array;
var x = -1;
if (orderby != 'asc') {
x = 1;
}
var val = array[0][columnIndex];// İlk değere bakıyorum.
var isNumericValue = !isNaN(parseFloat(val)) && isFinite(val);
if (isNumericValue) {
array.sort(function (a, b) {
if ((a[columnIndex] == null ? 0 : a[columnIndex]) < (b[columnIndex] == null ? 0 : b[columnIndex])) return x;
if ((a[columnIndex] == null ? 0 : a[columnIndex]) > (b[columnIndex] == null ? 0 : b[columnIndex])) return -x;
return 0;
});
} else {
array.sort(function (a, b) {
if ((a[columnIndex] == null ? '' : a[columnIndex]).toLowerCase() < (b[columnIndex] == null ? '' : b[columnIndex]).toLowerCase()) return x;
if ((a[columnIndex] == null ? '' : a[columnIndex]).toLowerCase() > (b[columnIndex] == null ? '' : b[columnIndex]).toLowerCase()) return -x;
return 0;
});
}
return array;
}
};
// Örnek kullanım, arrayımizi 0 index'de yer alan alana göre ascending olacak şekilde sıralıyoruz
var data = [
["ad1", "soyad1", 10],
["ad2", "soyad2", 20],
["ad3", "soyad3", 30]
];
data = ArrayHelper.Sort(data, 0, 'asc');
Comments