Массив содержит список значений, как показано ниже:
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 в порядке возрастания, не добавляя значения в object.func, затем сортируйте сортировку массив на основе apptDate в порядке возрастания
С помощью строки даты ISO 8601 вы можете использовать String#localeCompare
, но при этом сортировка 'OOS'
String#localeCompare
сверху.
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; }
2001-06-12-06-2001
дата: 2001-06-12-06-2001
Вы можете использовать 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);
15-18-2001
не является действительной датой.