我正在尝试使用sort()回调函数对其数组进行排序。
到目前为止,我的功能是获取元音的数量但不知道如何在sort()中实现它作为回调。
var array = [
"abc",
"december",
"ax",
"cv",
"veeeeee",
"colo",
"bobola",
"lax",
"cri",
"nahamua",
"pip"
];
这是我在一个单词中获取元音数量的函数。
function isVowel(x) {
var result;
result = x.toLowerCase() == "a" || x == "e" || x == "i" || x == "o" || x == "u";
return result;
}
function countVowels(strChar) {
var token = strChar.split('') // array of words
var countVowel = token.filter(isVowel)
return 'number of vowels: ' + countVowel.length
}
答案 0 :(得分:1)
这种方法按元音数排序,因此没有元音的单词将被放置在第一个位置。
isVowel
如何使用正则表达式/[aeiou]/i
。 calback(a, b)
的回调sort
会减去每个单词的元音数量,以使0
等于> 0
a 更高,< 0
b 更大。
var array = [
"abc",
"december",
"ax",
"cv",
"veeeeee",
"colo",
"bobola",
"lax",
"cri",
"nahamua",
"pip",
"zsw",
"bcfw"
];
function isVowel(x) {
//var result;
//result = x.toLowerCase() == "a" || x == "e" || x == "i" || x == "o" || x == "u";
//return result;
return (/[aeiou]/i).test(x);
}
function countVowels(strChar, strchar2) {
var count1 = strChar.split('').filter(isVowel).length;
var count2 = strchar2.split('').filter(isVowel).length;
if (count1 === count2) return strChar.localeCompare(strchar2);
return count1 - count2
}
array.sort(countVowels);
console.log(array);
.as-console-wrapper { max-height: 100% !important; top: 0; }