【发布时间】:2016-07-08 23:27:06
【问题描述】:
感谢这个帖子How does sort function work in JavaScript, along with compare function,我非常了解比较功能的工作原理
但我想知道如何将它用于以下复杂数据:
假设我有以下数据。
var data = [{
id: _A2,
parent: {
parent_id: _A1
},
createdOn: 1.1
},{
id:_A4,
parent: null ,
createdOn: 1.1
},{
id: _A1,
parent: null ,
createdOn: 1
},{
id: _A3,
parent: {
parent_id: _A1
},
createdOn: 1.2
},{
id: _A5,
parent: {
parent_id: _A4
},
createdOn: 1.2
}]
我想先按创建日期对其进行排序,然后将孩子与他们的父母分组,这给了我们:
var data = [{
id: _A1,
parent: null ,
createdOn: 1
},{
id: _A2,
parent: {
parent_id: 1
},
createdOn: 1.1
},{
id: _A3,
parent: {
parent_id: 1
},
createdOn: 1.2
},{
id: _A4,
parent: null ,
createdOn: 1.1
},{
id: _A5,
parent: {
parent_id: _A4
},
createdOn: 1.2
}]
甚至可以使用排序功能吗?
【问题讨论】:
-
这毫无意义。你说你想按创建日期排序,但是你想要 _A3 在 _A4 之前?
-
@Oriol 为什么它没有意义,也许你需要在对我的问题投反对票之前了解更多关于排序的信息!
-
查看我的解决方案jsfiddle.net/crazyvirus/np2pjctg
-
这没有意义,因为
1.1 < 1.2,所以_A4应该在_A3之前。不确定你想要什么排序,但这不是“按创建日期排序”。 -
让我们试着给它更多的感觉。假设你有一个平面 json 的 cmets 与子 cmets 混合在一起,或者像上面的例子一样回复。我想显示父评论以及他们的孩子排序创建日期..子创建日期是否大于其他父级无关紧要,它应该在其父级之下 - 子级最终将按 asc 方向排序。
标签: javascript sorting compare