San*_*tia 3 javascript arrays sorting object
我想用一个可以按日期排序的comman sort函数对数组进行排序.
videos = [
{publishDate: new Date("2016-07-20T07:45:00Z").toISOString()},
{publishDate: new Date("2016-07-27T07:45:00Z").toISOString()},
{publishDate: new Date("2016-07-23T07:45:00Z").toISOString()}
];
persons = [
{dob: new Date("2016-07-10T07:45:00Z").toISOString()},
{dob: new Date("2016-07-08T07:45:00Z").toISOString()},
{dob: new Date("2016-07-11T07:45:00Z").toISOString()}
];
Run Code Online (Sandbox Code Playgroud)
我可以用这个函数排序byDate()
function byDate(v1, v2) {
return v1.p > v2.p ? 1 : -1;
}
videos.sort(byDate);
Run Code Online (Sandbox Code Playgroud)
但是当我用person []数组调用这个函数时,这会产生错误,因为在[]数组中没有v1.p.
所以,我需要一个可以对不同对象数组进行排序的排序函数.
你需要指定密钥,你喜欢排序.此解决方案获取密钥并返回一个用于排序的函数.
function byDate(key) {
return function (a, b) {
return a[key].localeCompare(b[key]);
};
}
var videos = [{ publishDate: new Date("2016-07-20T07:45:00Z").toISOString() }, { publishDate: new Date("2016-07-27T07:45:00Z").toISOString() }, { publishDate: new Date("2016-07-23T07:45:00Z").toISOString() }],
persons = [{ dob: new Date("2016-07-10T07:45:00Z").toISOString() }, { dob: new Date("2016-07-08T07:45:00Z").toISOString() }, { dob: new Date("2016-07-11T07:45:00Z").toISOString() }];
console.log(videos.sort(byDate('publishDate')));
console.log(persons.sort(byDate('dob')));
Run Code Online (Sandbox Code Playgroud)
.as-console-wrapper { max-height: 100% !important; top: 0; }
Run Code Online (Sandbox Code Playgroud)