首页 > 下面代码无法实现相应功能,麻烦看看

下面代码无法实现相应功能,麻烦看看

这段代码是实现对text目录下的每个文本文件中的单词进行计数,代码无语法错误,但是在命令行下无法实现相应功能

var fs = require('fs');
var completedTasks = 0;
var tasks = [];
var wordCounts = {};
var fileDir = './text';

function checkIfComplete() {
  completedTasks++;
  if (completedTasks == tasks.length) {
    for (var index in wordCounts) {
      console.log(index + ':' + wordCounts[index]);
    }
  }
}

function countWordsText(text) {
  var words = text.toString().toLowerCase().split(/\w+/).sort();
  for (var index in words) {
    var word = words[index];
    if (word) {
      wordCounts[word] = (wordCounts[word]) ? wordCounts[word] + 1 : 1;
    }
  }
}

fs.readdir(fileDir, function (err, files) {
  if (err) {
    throw err;
  }
  for (var index in files) {
    var task = (function (file) {
      return function () {
        fs.readFile(file, function (err, text) {
          countWordsText(text);
          checkIfComplete();
        });
      }
    })(fileDir + '/' + files[index]);
  }
  for (var task in tasks) {
    tasks[task]();
  }
});


var words = text.toString().toLowerCase().split(/\w+/).sort();
console.log(words);

==>

var words = text.toString().toLowerCase().split(/\s+/).sort();
console.log(words);

下面代码也要修正

fs.readdir(fileDir, function (err, files) {
  if (err) {
    throw err;
  }
  for (var index in files) {
    var task = (function (file) {
      return function () {
        fs.readFile(file, function (err, text) {
          countWordsText(text);
          checkIfComplete();
        });
      }
    })(fileDir + '/' + files[index]);
    //将task加入到数组中,否则tasks长度为0,当然什么都没结果啦
    tasks.push(task);
  }
  for (var task in tasks) {
    tasks[task]();
  }
});
【热门文章】
【热门文章】