利用node.js对txt文本进行排序
虽然排序很简单,但是一定要注意对txt文本的处理和字符串类型的数据类型的转化
取出txt里的成绩项进行排序
思路:
- 在js里导入txt文件并将txt文件默认为一个字符串
- 由于分割算法比较困难,直接使用prototype里的split()方法对字符串进行分割,一定要注意分割后的结果是一个字符串数组
- 利用txt表格里的空格符对整个字符串进分割
第一次分割结果如下:
- 利用字符串数组里的=对数组进行分割
第二次分割结果如下
- 在第二次分割后的字符串数组的基础上,利用forEach对每个数组取第二个数字的值
- 最重要的一点是:取到了值后,注意所取得的数字是一个字符串型,所以应该将取到的值转化为Number型,才能进行排序
- 对数组各个元素进行换行
const fs = require('fs');
fs.readFile('6 成绩表.txt','utf8',function(err,dataStr){
if(err){
console.log('读取文件失败'+err.message);
}else{
const arrOld = dataStr.split(' ');
const arrNew = [];
arrOld.forEach(item =>{
arrNew.push(item.split('='))
})
const array = [];
arrNew.forEach(item =>{
array.push(parseInt(item[1]))
})
for(var i = 0; i <= array.length-1; i++){
for(var j = i ; j<=array.length -i -1; j++){
if(array[j] > array[j+1]){
temp = array[j+1];
array[j+1] = array[j];
array[j] = temp;
}
}
}
const newStr = array.join('\r\n');
console.log(newStr);
}
})
对整表进行排序
- 使用sort方法
- 排序完后对arrNew[index]添加等号,注意在分割好的多个数组后,一定要添加index索引号对其添加符号或者其他需要添加或i修改的东西。
const fs = require('fs');
fs.readFile('./6 成绩表.txt','utf8',function(err,dataStr){
if(err){
console.log('输出文件失败'+err.message);
}else{
const arrOld = dataStr.split(' ');
const arrNew = [];
arrOld.forEach(item =>{
arrNew.push(item.split('='));
})
console.log(arrNew);
arrNew.sort((a,b) => {
// var value1 = a[1];
// var value2 = b[1];
return a[1] - b[1];
})
arrNew.forEach((item,index) =>{
arrNew[index] = item.join('=');
})
const newarr = arrNew.join('\r\n');
console.log(newarr);
}
})
总结
提示:这里对文章进行总结:
内容都很简单,实际操作起来尤其要注意数据类型的转化。
同时帮助熟悉node.js