gpt4 book ai didi

javascript - sort(), sort(function(a,b){return a-b;}); 之间的区别和排序(函数(a,b){...})

转载 作者:数据小太阳 更新时间:2023-10-29 05:07:17 25 4
gpt4 key购买 nike

我想了解 sort() 的工作原理以及我应该如何使用它。

我做了一些研究(谷歌)并在 stackoverflow 上解决了类似的问题,但仍有一些事情对我来说不是 100% 清楚。

到目前为止,我的理解如下:

有:

不带参数的 sort():仅对 String 值的简单数组进行字母升序排序

例如

// sort alphabetically and ascending:
var myArr=["Bob", "Bully", "Amy"]
myArr.sort() // Array now becomes ["Amy", "Bob", "Bully"]


sort() with a function as a parameter:根据属性对数组中的对象进行排序;然而,这些项目被比较为数字

myArr.sort(function(a,b) { 
return a - b;
});


sort() with a function as a parameter:根据属性对数组中的对象进行排序;项目可以是数字字符串

myArr.sort(function(a, b) {
if (a.sortnumber < b.sortnumber) return -1;
else if (a.sortnumber > b.sortnumber) return 1;
return 0;
});


我尝试使用所有这 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);

Here也是一把 fiddle 。

所以,我的问题是:

  1. 我的理解正确吗?
  2. 有什么我遗漏的吗?
  3. 如果第三种情况一直有效,我能一直坚持下去吗?其他两种情况在某种程度上更有效或对第三种情况?

如果有人能详细说明以上内容,我将不胜感激。谢谢。

最佳答案

好的,经过一些额外的研究,通过 MDN documentation , 和 arraysortarraysort2链接,我发现这些链接非常有用,我创建了一张可能对其他人有用的幻灯片,所以我将其张贴在这里。谢谢大家的回答!

enter image description here

关于javascript - sort(), sort(function(a,b){return a-b;}); 之间的区别和排序(函数(a,b){...}),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39202616/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com