gpt4 book ai didi

Javascript 分配和增加 Obj 的键值(使用 Reduce)

转载 作者:行者123 更新时间:2023-11-30 20:42:33 25 4
gpt4 key购买 nike

我正在学习在线类(class),挑战之一是:

编写一个名为 vowelCount 的函数,它接受一个字符串并返回一个对象,每个键都是元音,值是元音在字符串中出现的次数(对象中键的顺序无关紧要) ).

vowelCount('incredible');
// {i:2, e: 2}
vowelCount('awesome');
// {a:1, e:2, o:1}

到目前为止,我使用 Javascript 的 reduce 编写了以下代码:

function vowelCount(word) {
var vowels = ['a', 'e', 'i', 'o', 'u'];

var final = word.split('').reduce(function(obj, val, index) {
if (vowels.indexOf(val) > -1) {
//obj[val] = 0
obj[val]++;
}
return obj
}, {})
console.log(final)
}

我想我已经很接近了,但我无法全神贯注地思考如何在检查元音键是否为元音时分配和增加元音键的数值。我尝试将值实例化为 0,但这只会使值保持为 1。

最佳答案

使用short circuit evaluation检查该值是否存在,如果不存在,则使用 0 代替:

console.log(vowelCount('incredible')); // {i:2, e: 2}
console.log(vowelCount('awesome')); // {a:1, e:2, o:1}

function vowelCount(word) {
var vowels = ['a', 'e', 'i', 'o', 'u'];

return word.split('').reduce(function(obj, val, index) {
if (vowels.indexOf(val) > -1) {
obj[val] = (obj[val] || 0) + 1;
}
return obj;
}, {});
}

此外,除了使用元音数组和 Array.indexOf() 检查,您可以使用元音初始化结果对象,并直接递增它们:

console.log(vowelCount('incredible')); // {i:2, e: 2}
console.log(vowelCount('awesome')); // {a:1, e:2, o:1}

function vowelCount(word) {
return word.split('').reduce(function(obj, val) {
if(val in obj) {
obj[val]++;
}
return obj;
}, { a: 0, e: 0, i: 0, o: 0, u: 0 });
}

关于Javascript 分配和增加 Obj 的键值(使用 Reduce),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49089714/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com