对 node.js 中的数组进行排序——已排序变为未排序
Sorting arrays in node.js -- sorted turns into unsorted
我需要对 node.js
中的字符串数组进行排序。我正在使用 underscore
库,对于下面的数组,它没有做它应该做的事情。
这是数组:
var stringsArray =
['2b9ee0e611af977edbfd6bb04a56ebe05af07bdbc2daf88e5617fb872487f27c',
'6f009f9cb714849dba36a302d96dcd940c803bab5aa72dc25f52c26d2a32aab6',
'980942c275b7a407650980d6be561e6260edc55316247f20c3250ffc4d3d3c2f',
'e262181e5298faaefbfcec1f6b3e5684b50a31ed0c751f052a725a6dfafed2a7',
'e5cc268ab1ddd6e650fb5bac1e8d2bee01d2e561674eec0198683757347ded3e'];
注意数组已经排序。这是排序代码,我希望它在这里什么都不做:
var sortedArray = underscore.sortBy(stringsArray, function (s) { return s.toLowerCase().charCodeAt() * -1; }).reverse();
但生成的数组未排序:
[ '2b9ee0e611af977edbfd6bb04a56ebe05af07bdbc2daf88e5617fb872487f27c',
'6f009f9cb714849dba36a302d96dcd940c803bab5aa72dc25f52c26d2a32aab6',
'980942c275b7a407650980d6be561e6260edc55316247f20c3250ffc4d3d3c2f',
'e5cc268ab1ddd6e650fb5bac1e8d2bee01d2e561674eec0198683757347ded3e',
'e262181e5298faaefbfcec1f6b3e5684b50a31ed0c751f052a725a6dfafed2a7' ]
这很奇怪。在大多数情况下,我检查了代码是否有效。但这次不是。有什么问题?为什么数组会乱码?你如何正确排序?
编辑:呃,看起来我的代码只对第一个字符进行排序。如果有人有一种递归检查整个字符串的排序,我将不胜感激。
不清楚您是真的希望对数组进行排序,还是希望它反向排序。如果你想对数组进行排序,你可以使用普通的 javascript
var stringsArray =
['2b9ee0e611af977edbfd6bb04a56ebe05af07bdbc2daf88e5617fb872487f27c',
'6f009f9cb714849dba36a302d96dcd940c803bab5aa72dc25f52c26d2a32aab6',
'980942c275b7a407650980d6be561e6260edc55316247f20c3250ffc4d3d3c2f',
'e262181e5298faaefbfcec1f6b3e5684b50a31ed0c751f052a725a6dfafed2a7',
'e5cc268ab1ddd6e650fb5bac1e8d2bee01d2e561674eec0198683757347ded3e'];
stringsArray.sort()
["2b9ee0e611af977edbfd6bb04a56ebe05af07bdbc2daf88e5617fb872487f27c",
"6f009f9cb714849dba36a302d96dcd940c803bab5aa72dc25f52c26d2a32aab6",
"980942c275b7a407650980d6be561e6260edc55316247f20c3250ffc4d3d3c2f",
"e262181e5298faaefbfcec1f6b3e5684b50a31ed0c751f052a725a6dfafed2a7",
"e5cc268ab1ddd6e650fb5bac1e8d2bee01d2e561674eec0198683757347ded3e"]
如果你想对一个数组进行反向排序,你可以将排序后的数组反向
stringsArray.sort().reverse()
["e5cc268ab1ddd6e650fb5bac1e8d2bee01d2e561674eec0198683757347ded3e",
"e262181e5298faaefbfcec1f6b3e5684b50a31ed0c751f052a725a6dfafed2a7",
"980942c275b7a407650980d6be561e6260edc55316247f20c3250ffc4d3d3c2f",
"6f009f9cb714849dba36a302d96dcd940c803bab5aa72dc25f52c26d2a32aab6",
"2b9ee0e611af977edbfd6bb04a56ebe05af07bdbc2daf88e5617fb872487f27c"]
我需要对 node.js
中的字符串数组进行排序。我正在使用 underscore
库,对于下面的数组,它没有做它应该做的事情。
这是数组:
var stringsArray =
['2b9ee0e611af977edbfd6bb04a56ebe05af07bdbc2daf88e5617fb872487f27c',
'6f009f9cb714849dba36a302d96dcd940c803bab5aa72dc25f52c26d2a32aab6',
'980942c275b7a407650980d6be561e6260edc55316247f20c3250ffc4d3d3c2f',
'e262181e5298faaefbfcec1f6b3e5684b50a31ed0c751f052a725a6dfafed2a7',
'e5cc268ab1ddd6e650fb5bac1e8d2bee01d2e561674eec0198683757347ded3e'];
注意数组已经排序。这是排序代码,我希望它在这里什么都不做:
var sortedArray = underscore.sortBy(stringsArray, function (s) { return s.toLowerCase().charCodeAt() * -1; }).reverse();
但生成的数组未排序:
[ '2b9ee0e611af977edbfd6bb04a56ebe05af07bdbc2daf88e5617fb872487f27c',
'6f009f9cb714849dba36a302d96dcd940c803bab5aa72dc25f52c26d2a32aab6',
'980942c275b7a407650980d6be561e6260edc55316247f20c3250ffc4d3d3c2f',
'e5cc268ab1ddd6e650fb5bac1e8d2bee01d2e561674eec0198683757347ded3e',
'e262181e5298faaefbfcec1f6b3e5684b50a31ed0c751f052a725a6dfafed2a7' ]
这很奇怪。在大多数情况下,我检查了代码是否有效。但这次不是。有什么问题?为什么数组会乱码?你如何正确排序?
编辑:呃,看起来我的代码只对第一个字符进行排序。如果有人有一种递归检查整个字符串的排序,我将不胜感激。
不清楚您是真的希望对数组进行排序,还是希望它反向排序。如果你想对数组进行排序,你可以使用普通的 javascript
var stringsArray =
['2b9ee0e611af977edbfd6bb04a56ebe05af07bdbc2daf88e5617fb872487f27c',
'6f009f9cb714849dba36a302d96dcd940c803bab5aa72dc25f52c26d2a32aab6',
'980942c275b7a407650980d6be561e6260edc55316247f20c3250ffc4d3d3c2f',
'e262181e5298faaefbfcec1f6b3e5684b50a31ed0c751f052a725a6dfafed2a7',
'e5cc268ab1ddd6e650fb5bac1e8d2bee01d2e561674eec0198683757347ded3e'];
stringsArray.sort()
["2b9ee0e611af977edbfd6bb04a56ebe05af07bdbc2daf88e5617fb872487f27c",
"6f009f9cb714849dba36a302d96dcd940c803bab5aa72dc25f52c26d2a32aab6",
"980942c275b7a407650980d6be561e6260edc55316247f20c3250ffc4d3d3c2f",
"e262181e5298faaefbfcec1f6b3e5684b50a31ed0c751f052a725a6dfafed2a7",
"e5cc268ab1ddd6e650fb5bac1e8d2bee01d2e561674eec0198683757347ded3e"]
如果你想对一个数组进行反向排序,你可以将排序后的数组反向
stringsArray.sort().reverse()
["e5cc268ab1ddd6e650fb5bac1e8d2bee01d2e561674eec0198683757347ded3e",
"e262181e5298faaefbfcec1f6b3e5684b50a31ed0c751f052a725a6dfafed2a7",
"980942c275b7a407650980d6be561e6260edc55316247f20c3250ffc4d3d3c2f",
"6f009f9cb714849dba36a302d96dcd940c803bab5aa72dc25f52c26d2a32aab6",
"2b9ee0e611af977edbfd6bb04a56ebe05af07bdbc2daf88e5617fb872487f27c"]