如何在javascript中对字母数字数组进行排序[重复]

Posted

技术标签:

【中文标题】如何在javascript中对字母数字数组进行排序[重复]【英文标题】:How to sort alphanumeric array in javascript [duplicate] 【发布时间】:2015-04-05 11:37:07 【问题描述】:

我遇到了排序字母数字数组的问题。

排序模式编号在前,然后是字母

09312d27-4ddc-458e-95dd-74531f787368,
1edcdde8-702e-4703-a505-ca81b77accdd,
.....

代码:

var alphaNumericArray = ['8a337e46-7d3f-46bc-b661-579f8d25fe09',
'09312d27-4ddc-458e-95dd-74531f787368',
'e7c5fba1-ce59-439a-a560-8f558e7c0ac4',
'1edcdde8-702e-4703-a505-ca81b77accdd',
'2f66ba6c-7fd2-4d52-8ed6-b0ee6d4d0310',
'7529217d-ee80-41eb-ade7-208674924ab9',
'523f4f75-8d0a-4ad1-8f40-e8bc679956be',
'80871291-c8de-47d9-9b02-3f8444c5d64e',
'7529217d-ee80-41eb-ade7-208674924ab9'];

alphaNumericArray.sort(function(a, b) 
   a = a.value;
   b = b.value;
   return a-b;
);

//console.log(alphaNumericArray);
//alert(alphaNumericArray);

输出未排序。它在警报弹出窗口和控制台日志中显示了相同的数组。

【问题讨论】:

javascript 中的排序默认是字符串比较排序。您不能从另一个字符串中减去一个字符串,这就是您的比较器功能不起作用的原因。 这也与jQuery无关。 [...]jQuery is a popular cross-browser JavaScript library that facilitates DOM (html Structure) traversal, event handling, animations, and AJAX interactions [...] 您的问题与 jQuery 完全无关。但是是香草 javascript。 return a.localeCompare(b);,数组没有value属性? 为什么不使用 alphaNumericArray.sort();?它排序完美? 【参考方案1】:

var alphaNumericArray = [
  '8a337e46-7d3f-46bc-b661-579f8d25fe09',
  '09312d27-4ddc-458e-95dd-74531f787368',
  'e7c5fba1-ce59-439a-a560-8f558e7c0ac4',
  '1edcdde8-702e-4703-a505-ca81b77accdd',
  '2f66ba6c-7fd2-4d52-8ed6-b0ee6d4d0310',
  '7529217d-ee80-41eb-ade7-208674924ab9',
  '523f4f75-8d0a-4ad1-8f40-e8bc679956be',
  '80871291-c8de-47d9-9b02-3f8444c5d64e',
  '7529217d-ee80-41eb-ade7-208674924ab9'
];

alphaNumericArray.sort();

document.getElementById('out').textContent = JSON.stringify(alphaNumericArray, null, 2);
<pre id="out"></pre>

结果是:

[
  "09312d27-4ddc-458e-95dd-74531f787368",
  "1edcdde8-702e-4703-a505-ca81b77accdd",
  "2f66ba6c-7fd2-4d52-8ed6-b0ee6d4d0310",
  "523f4f75-8d0a-4ad1-8f40-e8bc679956be",
  "7529217d-ee80-41eb-ade7-208674924ab9",
  "7529217d-ee80-41eb-ade7-208674924ab9",
  "80871291-c8de-47d9-9b02-3f8444c5d64e",
  "8a337e46-7d3f-46bc-b661-579f8d25fe09",
  "e7c5fba1-ce59-439a-a560-8f558e7c0ac4"
]

在此处阅读更多信息https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort

【讨论】:

这是正确的解决方案,但也请解释为什么它有效(而 OP 的尝试没有) 请阅读这里w3schools.com/jsref/jsref_sort.asp 最好不要,使用MDN 作为参考。但是,我建议您 edit 您的答案以包含解释:-)

以上是关于如何在javascript中对字母数字数组进行排序[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何在javascript中对字符串进行数字排序

按字母数字对javascript数组进行排序[重复]

如何对数字的javascript数组进行排序[重复]

如何在javascript中对多维数组进行排序

如何在javascript中对嵌套的对象数组进行排序?

如何在JavaScript中对二维数组进行排序?