console.log(recompose("KiKdaola"));
所以我有这个代码,我试图从函数“recompose”中产生的结果是这个
-->[ 'K', 'i', 'Kd', 'ao', 'l', 'a' ]
如果没有正则表达式,就无法实现这种对元音和辅音进行聚类/分组,我们将不胜感激。
答案 0 :(得分:1)
好吧,您可以拆分字符串,然后使用翻转标志对其进行处理:
const str = "KiKdaola";
const VOWELS = ['a', 'e', 'i', 'o', 'u'];
function isVowel(ch) {
const lch = ch.toLowerCase();
return VOWELS.includes(lch);
}
function recompose(str) {
let prevIsVowel;
return str.split('').reduce((acc, ch) => {
const currIsVowel = isVowel(ch);
if (prevIsVowel !== currIsVowel) {
acc.push('');
}
prevIsVowel = currIsVowel;
acc[acc.length - 1] += ch;
return acc;
}, []);
}
console.log(recompose(str));
然而,为了完整起见,这里是基于正则表达式的方式 - 使用 String.split() 和捕获组:
const str = 'abceefdfdei';
const results = str.split(/([aeiou]+)/i).filter(Boolean);
console.log(results);