我的结构如下:
[
{id: 1, afterId: -1},
{id: 5, afterId: 2},
{id: 2, afterId: 4},
{id: 4, afterId: 1},
{id: 3, afterId: 5}
]
被修改
要求:
预期结果:
[
{id: 1, afterId: -1},
{id: 4, afterId: 1},
{id: 2, afterId: 4},
{id: 5, afterId: 2},
{id: 3, afterId: 5}
]
答案 0 :(得分:1)
以下是使用for循环的解决方案。
var newList = [];
var afterId = -1;
for (var i = 0; i < list.length; i++) {
var item;
for (var j = 0; j < list.length; j++) {
if (list[j].afterId === afterId) {
item = list[j];
break;
}
}
afterId = item.id;
newList.push(item);
}
http://jsfiddle.net/z3sfdo1z/1/
从-1开始,遍历列表以按顺序放置每个项目,直到所有项目都已放置。请注意,如果数组缺少特定的afterId,则会失败。
答案 1 :(得分:0)
这是一个根据您的开始而工作的解决方案:
list.sort(function(a,b){
if (a.afterId == -1 || b.afterId == a.id) {
return -1;
}
if (b.afterId == -1 || a.afterId == b.id) {
return 1;
}
return 0;
});