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

时间:2016-04-16 12:22:24

标签: javascript

我想对这篇文章中的数字和字符串进行排序:Sort strings and numbers in Ruby

我准备了以下方法来比较值。

# This method is expected to work Ruby's `<=>`.
compare: (x, y) ->
  if x < y then -1 else if x > y then 1 else 0

但JavaScript的比较与Ruby的比较不同。

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])

虽然11明显大于2,但数组的第二个值似乎无法正确比较。

你能告诉我什么是错的吗?

2 个答案:

答案 0 :(得分:1)

在Javascript Array#sort中按字符串排序。

  

sort()方法对数组中的元素进行排序并返回数组。排序不一定稳定。 默认排序顺序取决于字符串Unicode代码点。 [NS强调]

sort()示例和使用Numbers回调的排序。

&#13;
&#13;
var array = [1, 2, 11, 20];

array.sort();
document.write('<pre>' + JSON.stringify(array, 0, 4) + '</pre>');

array.sort(function (a, b) { return a - b; });
document.write('<pre>' + JSON.stringify(array, 0, 4) + '</pre>');
&#13;
&#13;
&#13;

答案 1 :(得分:0)

您正在尝试比较数组值而不是数组的内容。您必须决定如何处理不同长度的数组并循环使用值并进行比较。