Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.JS字符串数组排序不起作用_Node.js_Sorting_Arrays - Fatal编程技术网

Node.JS字符串数组排序不起作用

Node.JS字符串数组排序不起作用,node.js,sorting,arrays,Node.js,Sorting,Arrays,嗨,我是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.

嗨,我是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);
上面的node.js代码从node.exe目录中读取一个字符串文件。按换行符('\n')拆分字符串以获取数组。对数组进行排序并将排序后的数组打印到文件中。因此,作为一个整体,脚本读取一个文件,对条目进行排序,并将排序后的条目保存在另一个文件中。问题是排序顺序不正确。我尝试使用MS Excel手动对unsort.txt的内容进行排序,从而获得正确的排序顺序。有人能帮我解释一下为什么arr.sort()不能正常工作吗。您可以在[sort.rar][1]包中下载unsort.txt、sort_by_script.txt、sort_by_ms_excel.txt和node.exe

注意:unsort.txt没有数字。所有这些都只是字母表。

unsort.txt中的示例:

appjs
gbi
node
frame
require
process
module
WebSocket
webkitAudioContext
webkitRTCPeerConnection
webkitPeerConnection00
webkitMediaStream
MediaController
HTMLSourceElement
TimeRanges

如果不传递自定义搜索函数,排序函数将按词汇进行排序,数字将转换为字符串,因此,例如,“10”位于“3”之前。因此字符串被排序

您可以将自定义函数传递给决定项目顺序的排序函数,对于数字,这将是一个示例(注意,如果您不将示例中的数字转换/解析为数字,则示例中的数字将是字符串):

字符串的另一个示例:

var sortstring = function (a, b)    {
    a = a.toLowerCase();
    b = b.toLowerCase();
    if (a < b) return 1;
    if (a > b) return -1;
    return 0;
}
var sortstring=函数(a,b){
a=a.toLowerCase();
b=b.toLowerCase();
如果(ab)返回-1;
返回0;
}
我会使用

arr.sort((obj1, obj2) => {
            return obj1.localeCompare(obj2);
        });

这很可能会解决您的问题。

按什么排序?您是否知道您对字符串而不是数字进行排序?您能否描述文件的内容以及您希望如何对其进行排序?请在这里发布,下载不会永远有效(目前不起作用)unsort.txt@sort\u by\u script.txt@sort\u by\u ms\u excel.txt@但unsort.txt根本没有数字。所有的都是字母表。请把内容贴在这里。这是一个猜测和一个例子,你的谷歌文件夹无法打开,它不会永远在那里(与这个问题相反)你可以尝试下载它现在在不同的链接张贴他们在这里,这是很容易做到的,即使它只是一个文件的摘录文件有564行的条目。如果我把它贴在这里,它会弄得一团糟。我想下载现在应该可以用了。再试一次。
arr.sort((obj1, obj2) => {
            return obj1.localeCompare(obj2);
        });