var arr = [];
arr.push(row1);
arr.push(row2);
...
arr.push(rown);
Как отсортировать по row['key']
?
Массив JavaScript имеет встроенный метод сортировки ()
. В этом случае что-то вроде следующее будет работать:
arr.sort( function(row1, row2) {
var k1 = row1["key"], k2 = row2["key"];
return (k1 > k2) ? 1 : ( (k2 > k1) ? -1 : 0 );
} );
Вы вызываете функцию сортировки массива с помощью компаратора. Компаратор JavaScript - это просто функция, которая возвращает -1, 0 или 1 в зависимости от того, является ли a меньше b, a равно b или a больше b:
myarray.sort(function(a,b){
if(a < b){
return -1;
} else if(a == b){
return 0;
} else { // a > b
return 1;
}
});
Это всего лишь пример, ваша функция может основывайте сравнение на том, что вы хотите, но оно должно возвращать -1,0,1.
Надеюсь, это поможет.
Да, Visual C ++ поддерживает его - я только что сделал что-то подобное. Не уверен в других версиях C ++.
Вы включили библиотеку? Какое определение Array_Capacity?
, когда вы говорите: «Невозможно», вы имеете в виду, что вы имели ошибки компилятора / линкера или что-то еще? Можете ли вы предоставить более подробную информацию?
-121--2934022-Рассмотрим следующий код:
var arr = new Array();
for(var i = 0; i < 10; ++i) {
var nestedArray = [ "test", Math.random() ];
arr.push(nestedArray);
}
function sortBySecondField(a, b) {
var aRandom = a[1];
var bRandom = b[1];
return ((aRandom < bRandom) ? -1 : ((aRandom > bRandom) ? 1 : 0));
}
arr.sort(sortBySecondField);
alert(arr);
Теперь просто измените функцию SOOTBYSECORDField
, чтобы сравнить A ['Key']
вместо [1]
и сделайте то же самое для B
.
Вот набор функций, если вы хотите отсортировать по порядку, убыванию или сортировке по нескольким столбцам в массиве.
var cmp = function(x, y){ return x > y? 1 : x < y ? -1 : 0; },
arr = [{a:0,b:0},{a:2,b:1},{a:1,b:2},{a:2, b:2}];
// sort on column a ascending
arr.sort(function(x, y){
return cmp( cmp(x.a, y.a), cmp(y.a, x.a) );
});
// sort on column a descending
arr.sort(function(x, y){
return cmp( -cmp(x.a, y.a), -cmp(y.a, x.a) );
});
// sort on columns a ascending and b descending
arr.sort(function(x, y){
return cmp([cmp(x.a, y.a), -cmp(x.b, y.b)], [cmp(y.a, x.a), -cmp(y.b,x.b)]);
});
Чтобы получить сортировку по возрастанию, используйте «cmp (...)», а для получения сортировки по убыванию используйте «-cmp (...)»
И для сортировки по нескольким столбцам сравните два массива cmp (...)