我想对这篇文章中的数字和字符串进行排序: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
,但数组的第二个值似乎无法正确比较。
你能告诉我什么是错的吗?
答案 0 :(得分:1)
在Javascript Array#sort中按字符串排序。
sort()
方法对数组中的元素进行排序并返回数组。排序不一定稳定。 默认排序顺序取决于字符串Unicode代码点。 [NS强调]
sort()示例和使用Numbers回调的排序。
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;
答案 1 :(得分:0)
您正在尝试比较数组值而不是数组的内容。您必须决定如何处理不同长度的数组并循环使用值并进行比较。