如何在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中对字母数字数组进行排序[重复]的主要内容,如果未能解决你的问题,请参考以下文章