Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
名称的简单排序算法-Javascript_Javascript_Sorting - Fatal编程技术网

名称的简单排序算法-Javascript

名称的简单排序算法-Javascript,javascript,sorting,Javascript,Sorting,如果我有一个对象数组数组1:[Object 1,Object 2,Object 3],每个对象如下所示: object 1 has properties : creation date, name, class, size where name = Bear object 2 has properties : creation date, name, class, size where name = Dog object 3 has properties : creation date, nam

如果我有一个对象数组数组1:
[Object 1,Object 2,Object 3]
,每个对象如下所示:

object 1 has properties : creation date, name, class, size where name = Bear
object 2 has properties : creation date, name, class, size where name = Dog
object 3 has properties : creation date, name, class, size where name = Guerilla
我想根据它们各自的名称按字母顺序对这些对象进行排序,因此数组2类似于下面的
[对象1(熊)、对象2(狗)、对象3(游击队)]

我如何用Javascript解决这个问题?有没有什么方便的方法?我对JS比较陌生。提前谢谢你

与自定义比较器一起使用:

Array1.sort(function(x, y){
  var n1 = x.name;
  var n2 = y.name;
  return n1 == n2 ? 0
    : n1 < n2 ? -1
    : 1;
});
Array1.排序(函数(x,y){
var n1=x.name;
var n2=y.name;
返回n1==n2?0
:n1
将与自定义比较器一起使用:

Array1.sort(function(x, y){
  var n1 = x.name;
  var n2 = y.name;
  return n1 == n2 ? 0
    : n1 < n2 ? -1
    : 1;
});
Array1.排序(函数(x,y){
var n1=x.name;
var n2=y.name;
返回n1==n2?0
:n1
您可以将一个自定义比较函数传递给Array.sort,然后排序算法将使用该函数来决定两个数组元素中哪一个较大。当算法比较两个对象时,会将它们传递给比较函数。当函数返回1时,它认为第一个值更大。当它返回-1时,它认为第二个更大。当它返回0时,它认为它们相等

 function compare_function(obj1, obj2){
      if (obj1.name == obj2.name) return 0;
      if (obj1.name < obj2.name) return -1 else return 1;

  }
  my_array.sort(compare_function) 
功能比较功能(obj1、obj2){ 如果(obj1.name==obj2.name)返回0; if(obj1.name
您可以将一个自定义比较函数传递给Array.sort,然后排序算法将使用该函数来决定两个数组元素中哪一个较大。当算法比较两个对象时,会将它们传递给比较函数。当函数返回1时,它认为第一个值更大。当它返回-1时,它认为第二个更大。当它返回0时,它认为它们相等

 function compare_function(obj1, obj2){
      if (obj1.name == obj2.name) return 0;
      if (obj1.name < obj2.name) return -1 else return 1;

  }
  my_array.sort(compare_function) 
功能比较功能(obj1、obj2){ 如果(obj1.name==obj2.name)返回0; if(obj1.name您可以使用数组的排序方法,并传入函数:

Array1.sort(function(left,right) {
    if (left.name < right.name) return -1;
    if (left.name > right.name) return 1;
    return 0;
});
Array1.sort(函数(左、右){
if(left.nameright.name)返回1;
返回0;
});

您可以使用数组的排序方法,并传入函数:

Array1.sort(function(left,right) {
    if (left.name < right.name) return -1;
    if (left.name > right.name) return 1;
    return 0;
});
Array1.sort(函数(左、右){
if(left.nameright.name)返回1;
返回0;
});
请注意,
sort
是就地排序,因此原始数组将被排序


请注意,
sort
是就地排序,因此原始数组将被排序。

javascript排序方法接受匿名比较函数,该函数为您提供了对任何属性上的对象进行排序所需的所有灵活性

一般情况是:

arr.sort(function(a,b){...});
提供给sort方法的“匿名”函数接受两个要比较的对象,并应返回一个值,该值指示要将哪个元素排序得更高,如下所示:

如果a的排序应高于b,则返回1
如果a的排序应低于b,则返回-1
如果a相当于b(用于排序),则返回0

下面是一个示例(省略号表示其他属性):

在这里,我依赖于js比较name属性返回的字符串的能力


我认为这应该对您起作用。

javascript排序方法接受一个匿名比较函数,它为您提供了对任何属性上的对象进行排序所需的所有灵活性

一般情况是:

arr.sort(function(a,b){...});
提供给sort方法的“匿名”函数接受两个要比较的对象,并应返回一个值,该值指示要将哪个元素排序得更高,如下所示:

如果a的排序应高于b,则返回1
如果a的排序应低于b,则返回-1
如果a相当于b(用于排序),则返回0

下面是一个示例(省略号表示其他属性):

在这里,我依赖于js比较name属性返回的字符串的能力


我认为这应该对你有帮助。

@Alnitak:当你想要一个精确的比较时,这是有道理的。在这里它没有意义。如果
2
“2”
被认为是不相等的,那么你希望
2
2>“2”
为真吗?我想你的意思是“函数”,但我喜欢这个答案,因为这里的代码非常明确…@Derek:方法是一个作为对象成员的函数。@Derek:Aha,现在我明白你的意思了。谢谢,修好了。:)@Guffa没问题。我只是想确保找到帖子并复制/粘贴此代码的任何其他人都不会对代码不起作用感到惊讶。同样,回答得很好…@Alnitak:当你想要一个精确的比较时,这是有道理的。在这里它没有意义。如果
2
“2”
被认为是不相等的,那么你希望
2
2>“2”
为真吗?我想你的意思是“函数”,但我喜欢这个答案,因为这里的代码非常明确…@Derek:方法是一个作为对象成员的函数。@Derek:Aha,现在我明白你的意思了。谢谢,修好了。:)@Guffa没问题。我只是想确保找到帖子并复制/粘贴此代码的任何其他人都不会对代码不起作用感到惊讶。再次,伟大的回答。。。