You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Node.js环境下如何将单词统计结果按字母顺序排序

Node.js单词统计结果按字母排序实现方案

你现有代码返回的是存储单词和对应出现次数的普通对象,普通对象本身没有顺序,只需要额外加一步排序逻辑即可,具体实现如下:

核心思路

  • 使用Object.entries()将统计结果对象转换为[单词, 出现次数]格式的二维数组
  • 调用数组的sort()方法,通过localeCompare()实现符合自然语言规则的字母排序
  • 可根据需求选择返回排序后的数组,或再转回有序对象

完整修改后代码

const { readFileSync } = require('fs');

// 你的文本文件路径
const file = 'C:\\Users\\eeroj\\source\\repos\\Nodejs\\pish\\pish\\TextFile2.txt';

function countRepeatedWords(sentence) {
    // split按空格拆分后,可过滤空字符串,按需加toLowerCase统一大小写(不区分大小写统计时使用)
    const words = sentence.split(" ")
        .filter(word => word.trim() !== '')
        // 不需要统一大小写的话删掉下面这行
        .map(word => word.toLowerCase());

    const wordMap = {};
    for (let i = 0; i < words.length; i++) {
        wordMap[words[i]] = (wordMap[words[i]] || 0) + 1;
    }

    // 核心排序逻辑:按单词字母升序排列
    const sortedResult = Object.entries(wordMap).sort(([wordA], [wordB]) => {
        return wordA.localeCompare(wordB);
    });

    // 如果需要返回对象格式,用下面的代码替代上面的返回值(ES2019+支持)
    // const sortedWordMap = Object.fromEntries(sortedResult);
    // return sortedWordMap;

    return sortedResult;
}

const fileContent = readFileSync(file).toString();
// 输出排序后的统计结果
console.log(countRepeatedWords(fileContent));

补充说明

  • 如果需要字母倒序排列,把排序逻辑改成return wordB.localeCompare(wordA)即可
  • 默认区分大小写排序的话,大写字母开头的单词会排在小写字母开头的单词之前,不需要区分就保留toLowerCase的逻辑
  • 排序后返回的数组格式更方便后续处理,比如直接遍历输出单词和次数

内容的提问来源于stack exchange,提问作者Eero Jyrgenson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 04:00:03