我想对对象数组进行排序。我的对象中有日期我想对对象的日期进行排序
sortFunction(data: Array<any>, propertyRetriever: Function, direction : number) {
data.sort((a, b) => {
console.log('a : ' + a.id);
console.log('b : ' + b.id);
a = propertyRetriever(a);
b = propertyRetriever(b);
// We handle undefined value as they are lower than everything else.
// ex : undefined < 'hello'
if ((!a && !b) || a === b ) {
return 0;
}
else if (!a) {
return -1 * direction;
}
else if (!b) {
return 1 * direction;
}
else if (a > b) {
return 1 * direction;
} else {
return -1 * direction;
}
});
propertyRetriever是调用sortFunction
时给出的函数 this._sorter.sortFunction(
myArray,
t => t[this.sortField],
this.sortDirection);
}
我用相同的数组调用两次这个sortFunction,我有diffrents结果。 我不明白为什么
有人会说他随机进行比较。
我认为它会开始比较第一个和第二个,但不是,如果我在第一次迭代时将断点放在“a = propertyRetriever(a)”上并且我显示a和b,它们每次执行都不同
为例 我有obj的数组
obj1 =
id: 1
creationDate : Mon Jan 30 2017 01:00:00 GMT+0100 (Romance Standard Time)
name :albert
obj2 =
id: 2
creationDate : Mon Jan 23 2017 01:00:00 GMT+0100 (Romance Standard Time)
name :jules
obj3 =
id: 3
creationDate : Mon Jan 05 2016 01:00:00 GMT+0100 (Romance Standard Time)
name :jules
.....
obj2000 =
id: 2000
creationDate : Mon Apr 04 2016 01:00:00 GMT+0100 (Romance Standard Time)
name :jules
第一次执行排序时:在控制台
a: 10
b: 12
a: 11
b: 45
第二次
a: 21
b: 14
a: 10
b: 13