以下代码按时间戳的数值排序。如有必要,它会忽略跳过数组条目并执行时间戳的字符串到数字的转换。它假定除了“字符串”和“数字”之外,时间戳记不属于其他数据类型。
userArray.filter ( px_item => {
return (px_item !== undefined);
})
.map ( px_item => {
if (typeof px_item === "string") {
return parseInt(px_item);
} else {
return px_item;
}
})
.sort(function(a, b) {
if (typeof a === "undefined") {
return -1;
} else {
if (typeof b === "undefined") {
return 1;
} else {
return Math.sign ( a['timestamp'] - b['timestamp'] );
}
}
});
原始代码的排序功能错误。这个函数实际上是一个比较函数,用于确定两个元素的相对顺序(在给定的用例中是数组条目)。顺序表示为数值-1( a < b)、0( a = b) 和1( a > b) 之一(实际上,要正确处理比较结果,只要结果具有正确的符号就足够了,因此Math.sign可以消除)。