我有一个单词数组
和以下字母列表:
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/