javascript - 按某些字母出现的次数对数组进行排序

标签 javascript arrays sorting

我有一个单词数组和以下字母列表:

searoiltnudcypmhgbkfwvzxjq

我想按此列表中的字母顺序对数组进行排序,以便列表开头附近字母数量最多的单词首先出现。例如:如下:

var wordList = "nymph, races, tundra"; 

排序后,应该是:

wordList = "races, tundra, nymph"; 

到目前为止,我有以下方法为列表中的每个字母分配权重:

  for (let h = 0; h < freqWords.length; h++) {
     this["freq" + h] = h; 
  }

接下来,我必须根据数组中包含的变量数量为每个单词赋予一个值,然后按从最低值到最高值的顺序进行排序。不幸的是,我不知道完成此操作的语法。

最佳答案

更短的声明式函数式替代方案:

const letters = 'searoiltnudcypmhgbkfwvzxjq';
const input = "nymph, races, tundra"
const sorted = input.split(',').map(str => str.trim()).sort((aWord, bWord) => {

    const aCount = aWord.split('').filter(char => letters.includes(char)).length;
    const bCount = bWord.split('').filter(char => letters.includes(char)).length;

    return bCount - aCount;

});

关于javascript - 按某些字母出现的次数对数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50808003/

相关文章:

c - 动态内存(calloc)和指向指针的指针 [C]

c++对内部带有类 vector 的类进行排序

javascript - jQuery 颜色框 : how do I prevent the loading indicator small box from appearing before the main colorbox content does?

javascript - Zara的产品图片功能

javascript - 将数据从 Jinja 传回 Flask

java - Java中如何对两个事物进行排序?

c# - 从抽象类型对象数组访问特定子类的对象

javascript - 是否可以用 jasmine 模拟网络故障来模拟 ajax 请求?

php - Laravel 合并数组

java - checkDeath() 没有被调用