一道nodejs+ES6的练习题,求大神给解题思路
任务要求:
用nodejs写一个程序,要求是读取本地一个叫study.txt的文件。里面的内容为:
wang 60
xiaoli 80
wang 40
。。。
统计每个同学各自共赚到多少钱?并输出按总额排序的表。
寻求解题思路,想得头都炸了!感激不尽。 展开
1、分析数据来源
首先我们观察study.txt文件中的内容格式:
studentID+空格+赚的钱数,且每一行只有一条记录,我们需要做的就是声明一个变量:
var studyData = { };
2、在nodejs中有自带的fs库处理文件。利用fs库读取文件,再利用js原生函数split将 studentID和赚的钱数分割开来并赋值到studyData中,如:studyData = {"wang": 60, "xiaoli": 80, "wang": 40 },再对studyData进行处理,将其中key值相等的合并在一起,最后变成这样:studyData = {"wang": 100, "xiaoli": 80 },到这一步,我们已经知道了每个同学各自赚到多少钱了。
3、根据json对象的属性对studyData进行排序,sort()。
生成按照总额排序的表,这里的表题主指的是excel表格吧,我们可以使用"xlsx"库,将已经排好序的数据直接生成excel表格,xlsx链接,至此,完成。
可以用JS
回答被百度吃了三次,蛋痛中,我再重发一次吧!
--------------------------------------------------------------------
------------------------------------------------------------
【study.txt】内容
wang 60
xiaoli 80
wang 40
张三 120
李四 250
张三 500
【node.js】内容
function GetText(fileName){
var Object = new
ActiveXObject('Scripting.FileSystemObject');
var String =
Object.OpenTextFile(fileName ,1).ReadAll();
Object.OpenTextFile(fileName
,1).close();
return String;
}
if(typeof(alert)=="undefined"){
var alert=function(text){new
ActiveXObject('WScript.Shell').Popup(text,0,'系统提示',48)};
}
var name={};
var value=GetText("study.txt");
value.replace(/^([a-z]+|[\u4E00-\u9FA5]+)\s+(\d+)$/igm,
function($1,$2,$3){
if( typeof(name[$2])!="undefined" ){
name[$2]+=parseInt($3);//number
}else{
name[$2]=parseInt($3);//undefined
}
return $1
}
);
alert( value );//全部文本
alert( "wang 的数据是" + name["wang"] );
alert( "张三 的数据是" + name["张三"] );