Jas*_*ndo 1 javascript sorting jquery
我有一个JavaScript对象,我使用.push()添加,但问题是,当我将数据推送到对象时,对象不再按时间值排序.我怎样才能创建这个相同的对象,但始终按照time_going_hour然后按time_going_minutes进行排序?
"days": {
"1": {
"places": [{
"url": "/attraction/mauna-kea-summit/19",
"img_src": "http://trekeffect.images.user_images.s3.amazonaws.com/4_36.jpg",
"title": "Mauna Kea Summit",
"time_going_hour": 1,
"time_going_minutes": 55,
"duration": "3600",
"id": 19,
"type": "attraction",
"city_id": 6
}, {
"url": "/attraction/the-st.-benedict-painted-church/21",
"img_src": "http://trekeffect.images.user_images.s3.amazonaws.com/4_42.jpg",
"title": "The St. Benedict Painted Church",
"time_going_hour": 8,
"time_going_minutes": 35,
"duration": "2600",
"id": 21,
"type": "attraction",
"city_id": 6
}, {
"url": "/attraction/mauna-kea-summit/19",
"img_src": "http://trekeffect.images.user_images.s3.amazonaws.com/4_36.jpg",
"title": "Mauna Kea Summit",
"time_going_hour": 3,
"time_going_minutes": 51,
"duration": "3600",
"id": 19,
"type": "attraction",
"city_id": 6
}]
}
Run Code Online (Sandbox Code Playgroud)
尝试
places.sort(function(x, y) {
return x.time_going_hour - y.time_going_hour ||
x.time_going_minutes - y.time_going_minutes
})
Run Code Online (Sandbox Code Playgroud)
Array.sort接受比较功能.比较函数接受两个参数(此处为x和y),并返回以下结果:
x > y),x < y),或x == y).这个比较函数首先尝试返回x'小时和小时的差异y(这样如果小时x大于小时y,则差异为正,否则为负).如果小时值相等,则小时差为0,并且||评估"或"()的右侧部分(因为0在布尔上下文中评估false).此右侧表达式执行与以前相同的比较,但使用分钟而不是小时.
简而言之,比较函数按小时对值进行排序,如果任何给定元素的小时数相同,则按分钟对它们进行子排序.
| 归档时间: |
|
| 查看次数: |
192 次 |
| 最近记录: |