Ответ на текущий овпрос:
Примерно так:
var objectList = [
{id:40, prevId:22},
{id:22, prevId:52},
{id:4364, prevId:40},
{id:4, prevId:'none'},
{id:52, prevId:4}
];
function sortSequential(objectList, coupleFrom, coupleTo, minValue) {
var sorted = [];
var couplingFound = true;
var couplingValue = minValue;
while(couplingFound) {
couplingFound = false;
for (var i=0; i<objectList.length; i++) {
if (objectList[i][coupleTo] === couplingValue) {
sorted.push(objectList[i]);
couplingValue = objectList[i][coupleFrom];
couplingFound = true;
break;
}
}
}
return sorted;
}
objectList = sortSequential(objectList, 'id', 'prevId', 'none');
Ответ на изначальный вопрос о сортировке объектов по значению одного из элементов:
Подозреваю, что речь идет все же о
массиве с объектами.
Если это не так, то уточните более подробно структуру вашего объекта. Желательно с примером.
Что же касается сортировки массива с объектам, то функция sort (которая доступна для любого массива) принимает в качестве аргумента пользотваельскую функцию для сортировки (
документация).
Пример использования:
var objectList = [
{id:1, parentId:2},
{id:2, parentId:4},
{id:3, parentId:1},
{id:4, parentId:'none'}
];
objectList.sort(function(someObject, otherObject) {
if (someObject.parentId === 'none') {
return -1;
}
return someObject.parentId >= otherObject.parentId ? -1 : 1;
});