在JavaScript中对字符串和数字进行排序

在JavaScript中对字符串和数字进行排序,javascript,Javascript,我想像这篇文章一样对数字和字符串进行排序: 我准备了下面的方法来比较这些值 # This method is expected to work Ruby's `<=>`. compare: (x, y) -> if x < y then -1 else if x > y then 1 else 0 虽然11明显大于2,但数组的第二个值似乎无法正确比较 您能告诉我出了什么问题吗?您试图比较的是数组值,而不是数组的内容。您必须决定如何处理不同长度的数组,并在值上循

我想像这篇文章一样对数字和字符串进行排序:

我准备了下面的方法来比较这些值

# This method is expected to work Ruby's `<=>`.
compare: (x, y) ->
  if x < y then -1 else if x > y then 1 else 0
虽然
11
明显大于
2
,但数组的第二个值似乎无法正确比较


您能告诉我出了什么问题吗?

您试图比较的是数组值,而不是数组的内容。您必须决定如何处理不同长度的数组,并在值上循环并比较它们。

在Javascript中,按字符串排序

sort()
方法对数组中的元素进行适当排序并返回数组。这种情况不一定稳定默认排序顺序根据字符串Unicode代码点。[按NS强调]

示例使用sort()和按数字回调进行排序

var数组=[1,2,11,20];
array.sort();
write(“”+JSON.stringify(数组,0,4)+“”);
sort(函数(a,b){返回a-b;});

write(“”+JSON.stringify(数组,0,4)+“”)为什么不向我们展示你的compare()函数,而不是为我们对它进行伪编码?我们不可能知道你的
x
是如何工作的。所展示的代码在javascript中没有意义。请看。为什么要搜索ruby方法而不搜索javascript方法?
x = [1, 11]
y = [1, 2]

compare(x, y)
# it expected to return 1 (means [1, 11] > [1, 2])
# but it returns -1 (means [1, 2] > [1, 11])