我有一个循环练习的问题。我写了3个可能的答案,我的代码每次都失败了。我的计数器失败了,我在变量的作用域和嵌套循环方面有问题。
我有一个食物数组,我必须找到一种元音与长度比例最好的食物,并将其打印到控制台。首先,我尝试创建3个变量,两个用来相互比较,一个用来存储结果,这给了我数组的部分未定义。我期望food3会有i的所有迭代,但它只有i[2],而food2有i[1],i[undefined],i[3]。
在我的第二次尝试有2个变量,但我的计数器失败。
const getGets = (arr) => {
let index = 0;
return () => {
const toReturn = arr[index];
index += 1;
return toReturn;
};
};
// Test input
const testInput = [
'4', 'pizza', 'macaroni', 'kiufte', 'banica'
];
const gets = this.gets || getGets(testInput);
const n = +gets();
let vowels
let food = '';
let ratio
let counter = 0;
for (let i = 1; i <= n; i++) {
let food1 = gets(); // pizza, undefined, kiufte, undefined
let food2 = gets();
let vowels1 = 0
let vowels2 = 0
let ratio1 = 0
let ratio2 = 0
for (let element of food1) {
console.log(element) // failed here, because of food1
if (element === 'a' || element === 'o' || element === 'u' || element === 'e' || element === 'i') {
counter++;
continue;
}
}
vowels1 = vowels1 + counter;
retio1 = vowels1 / food1.length;
retio2 = vowels2 / food2.length;
if (ratio1 >= ratio2) {
ratio1 = ratio
ratio2 = ratio1
food1 = food
food2 = food1
vowels1 = vowels
vowels2 = vowels1
}
console.log(`${food} ${vowels}/${food.length}`)
couner = 0;
}
1条答案
按热度按时间tp5buhyn1#
我的答案创建了一个对象来存储结果。然后,它循环遍历传递的数组,并使用正则表达式检查元音的数量。然后它检查元音变量是否有效,如果无效则返回元音数,如果无效则返回0,然后将其除以单词长度。
之后,检查结果对象以查看单词的比率是否大于已经存储的比率。如果新的比率更好,则将其存储。