javascript - 如何按先出现的字母对元音和辅音进行排序并删除“空格”
问题描述
如果我有“google chrome great”,则输出元音是“oooeeea”,辅音是“ggglchrrt”。我试试这段代码,但输出是“test.js:26 ooeoeea”
test("google crhome great")
function test(e){
var words = e.split("");
var vowels = "AIUEOaiueo";
var vowel = "";
for(var i = 0; i < e.length; i++){
if(vowels.includes(e[i])){
if(e[i] == 'a' || e[i] == 'A'){
vowel += e[i];
}
if(e[i] == 'i' || e[i] == 'I'){
vowel += e[i];
}
if(e[i] == 'u' || e[i] == 'U'){
vowel += e[i];
}
if(e[i] == 'e' || e[i] == 'E'){
vowel += e[i];
}
if(e[i] == 'o' || e[i] == 'O'){
vowel += e[i];
}
}
}
console.log(vowel);
}
解决方案
要正确排序这些值,请考虑将它们放在一个对象上,按字母索引。在每次迭代中,连接到(或创建)属性。最后,获取对象的值。
test("google crhome great")
function test(e){
const letters = {};
for (const letter of e) {
if (/[aeiou]/i.test(letter)) {
letters[letter] = (letters[letter] || '') + letter;
}
}
const vowels = Object.values(letters).join('');
console.log(vowels);
}
这是有效的,因为它会遍历字符串来构造一个像
{
o: 'ooo',
e: 'eee',
a: 'a',
}
然后您只需将这些值连接在一起即可获得您的字符串。
在正则表达式中使用字符集来保持元音测试的简洁。
如果你也需要辅音:
test("google crhome great")
function test(e){
const vs = {};
const cs = {};
for (const letter of e.replaceAll(' ', '')) {
const obj = /[aeiou]/i.test(letter) ? vs : cs;
obj[letter] = (obj[letter] || '') + letter;
}
const vowels = Object.values(vs).join('');
const consonants = Object.values(cs).join('');
console.log(vowels, consonants);
}
推荐阅读
- r - 带有 mutate 的 for 循环仅输出最后一个结果
- java - Serenity Report 未显示功能文件中提到的所有场景大纲,尽管为所有场景大纲截取了所有屏幕截图
- typescript - 在画布中移动先前绘制的矩形
- excel - 如果其他单元格与特定值匹配,如何在公式中引用特定单元格
- laravel - Laravel Echo 未订阅私人频道
- javascript - 如何在命令文件夹中创建文件夹并使其在 discord.js v12 中工作
- react-native - 无法在 Expo 中渲染 3D 模型
- vba - 允许用户选择多个文件
- c++ - 使用 STL 在 C++ 中计算分区
- angular - 如何在不使用表单的情况下将输入字段设置为无效,以便底部轮廓根据条件显示为红色