以下是作为实现对象排序问题的答案的工作代码,它工作得非常好。由于我是JavaScript的新手,我不明白返回类型究竟是什么。有人可以解释一下吗?
var people= [
{
"f_name": "john",
"l_name": "doe",
"sequence": "0",
"title" : "president",
"url" : "google.com",
"color" : "333333",
}
// etc
];
function sortResults(prop, asc) {
people = people.sort(function(a, b) {
if (asc) return (a[prop] > b[prop]) ? 1 : ((a[prop] < b[prop]) ? -1 : 0);
else return (b[prop] > a[prop]) ? 1 : ((b[prop] < a[prop]) ? -1 : 0);
});
showResults();
}
参数'prop'是propertyName,基于哪个排序需要完成,asc是一个布尔类型,如果为true则按asc顺序排序,如果为false则按desc顺序排序。
答案 0 :(得分:4)
它是Array.sort
,与jQuery
无关。请记住,jQuery
是另一个用javascript开发的库。
The MDN explains this already:
如果提供
compareFunction
,则对数组元素进行排序 根据比较函数的返回值。如果a和b是 比较两个要素,然后:
如果
compareFunction(a, b)
小于0
,请将a
排序为低于b
a
,即compareFunction(a, b)
首先出现。如果
0
返回a
,请离开b
和compareFunction(a, b)
相对于彼此保持不变,但相对于所有人而言 不同的元素。注意:ECMAscript标准不保证 这种行为,因而并非所有浏览器(例如Mozilla版本 追溯到至少2003年)尊重这一点。- 在给定特定对时,
如果
b
大于0时,将a
排序为低于compareFunction(a, b)
的索引。- 醇>
a
必须始终返回相同的值 元素b
和undefined
作为其两个参数。如果结果不一致 然后返回排序顺序为-1
并非强制要求仅返回1
或{{1}}。
答案 1 :(得分:0)
嗯,它返回2个元素相对于彼此的排序方式。
如果它为-1则表示元素应该交换,因为它们是相反的顺序。 如果
如果它是1,则意味着元素的顺序正确。
如果它为0则表示元素相等或位置相同,因此它们的顺序并不重要。