Tôi muốn sắp xếp một mảng theo cách tùy chỉnh. Ví dụ sẽ là classlevel của học sinh:làm thế nào để bạn áp dụng một loại tùy chỉnh cho một mảng?
_.sortBy(["Junior","Senior","Freshman","Sophomore"], function(classlevel){
// ??
})
Lý tưởng nhất, các loại nên trả lại:
["Freshman","Sophomore","Junior","Senior"]
Tôi nghĩ tôi có thể pre-rank các classlevels trước thời hạn như thế này:
var classlevelRanked = [{ class: "Junior",
rank: 3
},{ class: "Senior",
rank: 4
},{ class: "Freshman",
rank: 1
},{ class: "Sophomore",
rank: 2
}]
và sau đó áp dụng sắp xếp qua:
_.sortBy(classlevelRanked, function(classlevel){
return classlevel.rank;
})
Nhưng sau đó tôi phải loại bỏ hàng ngũ bằng cách thực hiện:
.map(function(classlevel){
return classlevel["class"];
})
Có cách trực tiếp hơn để làm điều này mà không cần tiền đứng classlevels và sau đó tước nó ra sau đó?
Chính xác những gì tôi đang tìm kiếm. Cảm ơn!! – Kevin
JS 101: xếp hạng của bạn bên ngoài câu lệnh gọi lại, không cần phải xác định lại 'xếp hạng' mỗi lần ... – mpowered
@mpowered, tôi nghĩ rằng đó có thể là một tối ưu hóa sớm. Trình duyệt sẽ có thể nhận ra nó như là một hằng số và biên dịch nó một lần. Bạn cũng có thể viết hai hàm: một hàm khai báo xếp hạng và trả về hàm thứ hai làm xếp hạng. Di chuyển 'xếp hạng' bên ngoài phạm vi chức năng gây ô nhiễm phạm vi toàn cầu, và nó vì nó chỉ áp dụng cho hàm đó, nên tốt hơn là có nó ở đó. – Jason