Din*_*esh 6 arrays sorting node.js
嗨,我是node.js的绝对初学者今天我尝试了以下代码
var fs, arr;
var dir, str;
var cont, item;
fs=require('fs');
cont=fs.readFileSync('unsort.txt').toString();
arr=cont.split('\n');
arr.sort();
for(str=arr.shift();str&&(item=arr.shift());)
str+='\n'+item;
fs.writeFileSync('sort_by_script.txt', str);
Run Code Online (Sandbox Code Playgroud)
上面的node.js代码从node.exe的目录中读取一个文件作为字符串.通过换行符('\n')拆分字符串以获取数组.对数组进行排序并将排序后的数组打印到文件中.因此,整个脚本读取文件对条目进行排序,并将排序的条目保存在另一个文件中.问题是排序顺序不正确.我尝试使用MS Excel手动排序unsort.txt的内容,通过它我得到了正确的排序顺序.任何人都可以帮助我为什么arr.sort()无法正常工作.你可以在包中下载unsort.txt,sort_by_script.txt,sort_by_ms_excel.txt和node.exe [Sort.rar] [1]
注意:unsort.txt没有数字.所有这些都只是字母表.
unsort.txt中的示例:
appjs
gbi
node
frame
require
process
module
WebSocket
webkitAudioContext
webkitRTCPeerConnection
webkitPeerConnection00
webkitMediaStream
MediaController
HTMLSourceElement
TimeRanges
Run Code Online (Sandbox Code Playgroud)
pfr*_*ied 11
如果你没有传递一个自定义搜索功能,那么sort函数会在词法上排序,数字会被转换为字符串,所以它会发生,例如"10"就在"3"之前.所以字符串得到排序.
您可以将自定义函数传递给sort函数,该函数决定项目的顺序,如果是数字,这将是一个示例(请注意,如果您不将数据转换/解析为数字,示例中的数字将为字符串):
var numsort = function (a, b) {
return a - b;
}
var numbers = new Array(20, 2, 11, 4, 1);
var result = numbers.sort(numsort);
Run Code Online (Sandbox Code Playgroud)
字符串的另一个例子:
var sortstring = function (a, b) {
a = a.toLowerCase();
b = b.toLowerCase();
if (a < b) return 1;
if (a > b) return -1;
return 0;
}
Run Code Online (Sandbox Code Playgroud)