[英]array sorting in Javascript based on certain key value and sort again based on another key value
數組包含以下值列表:
Object {status: "Pen"
apptDate:"12-06-2001 04:00 PM "
func:"OOS"}
Object {status: "Pen"
apptDate:"14-03-2001 04:00 PM "
func:"OOS"}
Object {status: "Pen"
apptDate:"15-09-2001 04:00 PM "
func:"OOS"}
Object {status: "Pen"
apptDate:"11-01-2001 04:00 PM "
}
Object {status: "Pen"
apptDate:"10-02-2001 04:00 PM "
}
需要基於當前數組創建一個新數組,該數組將具有object.func值,如“ OOS”,應首先將其推入數組,同時將apptDate保持asc順序,以防object.func中沒有值,然后對排序進行排序基於apptDate的數組,升序排列
使用ISO 8601日期字符串,您可以使用String#localeCompare
,同時注意最上面的'OOS'
排序。
var array = [{ status: "Pen", apptDate: "2001-06-12 04:00", func: "OOS" }, { status: "Pen", apptDate: "2001-03-14 04:00", func: "OOS" }, { status: "Pen", apptDate: "2001-09-15 04:00", func: "OOS" }, { status: "Pen", apptDate: "2001-01-11 04:00" }, { status: "Pen", apptDate: "2001-02-10 04:00" }]; array.sort(function (a, b) { return (b.func === 'OOS') - (a.func === 'OOS') || a.apptDate.localeCompare(b.apptDate); }); console.log(array);
.as-console-wrapper { max-height: 100% !important; top: 0; }
您可以將array.sort
與如下比較功能一起使用:
function(a,b){
if(a.func && a.func == "OOS" && a.func != b.func){
return -1;
} else {
return new Date(a.apptDate) - new Date(b.apptDate);
}
}
注意:我已經更新了一些日期以使其有效。
var arr = [{ status: "Pen", apptDate: "12-18-2001 04:00 PM ", func: "OOS" }, { status: "Pen", apptDate: "9-18-2001 04:00 PM ", func: "OOS" }, { status: "Pen", apptDate: "11-18-2001 04:00 PM ", func: "OOS" }, { status: "Pen", apptDate: "11-18-2001 04:00 PM " }, { status: "Pen", apptDate: "10-18-2001 04:00 PM " }]; arr.sort(function(a,b){ if(a.func && a.func == "OOS" && a.func != b.func){ return -1; } else { return new Date(a.apptDate) - new Date(b.apptDate); } }); console.log(arr);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.