Это простая проблема, не знаю, почему у людей такое сложное решение. Простая функция сортировки (на основе алгоритма быстрой сортировки):
function sortObjectsArray(objectsArray, sortKey)
{
// Quick Sort:
var retVal;
if (1 < objectsArray.length)
{
var pivotIndex = Math.floor((objectsArray.length - 1) / 2); // middle index
var pivotItem = objectsArray[pivotIndex]; // value in the middle index
var less = [], more = [];
objectsArray.splice(pivotIndex, 1); // remove the item in the pivot position
objectsArray.forEach(function(value, index, array)
{
value[sortKey] <= pivotItem[sortKey] ? // compare the 'sortKey' proiperty
less.push(value) :
more.push(value) ;
});
retVal = sortObjectsArray(less, sortKey).concat([pivotItem], sortObjectsArray(more, sortKey));
}
else
{
retVal = objectsArray;
}
return retVal;
}
Пример использования:
var myArr =
[
{ val: 'x', idx: 3 },
{ val: 'y', idx: 2 },
{ val: 'z', idx: 5 },
];
myArr = sortObjectsArray(myArr, 'idx');
Как мне сделать это в qt (используя QList myarray)
blockquote>Повторное использование ваших имен ( myarray для QList не очень интуитивно понятно) [114 ]
#include <QList> #include <QByteArray> #include <iostream> void split(const QByteArray & a, QList<QByteArray> & l, int n) { for (int i = 0; i < a.size(); i += n) l.push_back(a.mid(i, n)); } int main() { QByteArray array("azertyuiop"); QList<QByteArray> myarray; split(array, myarray, 3); for (QList<QByteArray>::const_iterator itl = myarray.constBegin(); itl != myarray.constEnd(); ++itl) { const QByteArray & a = *itl; for (QByteArray::const_iterator ita = a.constBegin(); ita != a.constEnd(); ++ita) { std::cout << *ita << ' '; } std::cout << std::endl; } return 0; }
Результат выполнения:
a z e r t y u i o p