Set*_*ily 6 javascript arrays sorting
我试图了解sort()的工作原理以及我应该如何使用它.
我做了一些研究(谷歌),并在stackoverflow上经历了类似的问题,但仍然有一些事情不是100%清楚我.
所以到目前为止我的理解如下:
有:
sort()不带参数:按字母顺序和升序排序字符串值的简单数组
例如
// sort alphabetically and ascending:
var myArr=["Bob", "Bully", "Amy"]
myArr.sort() // Array now becomes ["Amy", "Bob", "Bully"]
Run Code Online (Sandbox Code Playgroud)
使用函数作为参数的sort():根据数组属性对数组中的对象进行排序; 但是,这些项目将作为数字进行比较
myArr.sort(function(a,b) {
return a - b;
});
Run Code Online (Sandbox Code Playgroud)
使用函数作为参数的sort():根据数组属性对数组中的对象进行排序; 项目可以是数字或字符串
myArr.sort(function(a, b) {
if (a.sortnumber < b.sortnumber) return -1;
else if (a.sortnumber > b.sortnumber) return 1;
return 0;
});
Run Code Online (Sandbox Code Playgroud)
我尝试使用所有这3个sort()函数对以下数组进行排序.
var myArr = [{
"sortnumber": 9,
"name": "Bob"
},
{
"sortnumber": 5,
"name": "Alice"
},
{
"sortnumber": 4,
"name": "John"
},
{
"sortnumber": 3,
"name": "James"
},
{
"sortnumber": 7,
"name": "Peter"
},
{
"sortnumber": 6,
"name": "Doug"
},
{
"sortnumber": 2,
"name": "Stacey"
}];
//myArr.sort(); // doesn't do anything since it doesn't know on what property to sort
/*
myArr.sort(function(a, b) {
return (a.sortnumber - b.sortnumber); // sorts array
return (a.name - b.name); // doesn't sort array
});
*/
/*
// sorts array even when I use name as property to sort on
myArr.sort(function(a, b) {
if (a.sortnumber < b.sortnumber) return -1;
else if (a.sortnumber > b.sortnumber) return 1;
return 0;
});
*/
console.log(myArr);Run Code Online (Sandbox Code Playgroud)
这也是一个小提琴.
所以,我的问题是:
如果有人能详细说明上述情况,我将非常感激.谢谢.