Javascript 有没有一种方法可以以更优雅、优化的方式编写这段小代码?(ES6)

Javascript 有没有一种方法可以以更优雅、优化的方式编写这段小代码?(ES6),javascript,optimization,ecmascript-6,Javascript,Optimization,Ecmascript 6,我已经试着自学ES6有一段时间了。下面是我学习的一个小例子,比如let、const和=>函数。有没有更优雅或更短的方式来写这篇文章?也许用forEach替换for循环?欢迎提供任何提示和帮助 'use strict'; const countChar = (string, ch) => { let counted = 0; for (let i = 0; i < string.length; i++) { if (string.charAt(i) ==

我已经试着自学ES6有一段时间了。下面是我学习的一个小例子,比如let、const和=>函数。有没有更优雅或更短的方式来写这篇文章?也许用forEach替换for循环?欢迎提供任何提示和帮助

'use strict';
const countChar = (string, ch) => {
    let counted = 0;
    for (let i = 0; i < string.length; i++) {
        if (string.charAt(i) === ch) {
            counted += 1;
        }
    }
    return counted;
};

const countBs = string => countChar(string, 'B');

console.log(countBs('BBC'));
console.log(countChar('kakkerlak', 'k'));

情人眼里出西施,但这里有一种方法可以通过使用:

"严格使用",; const countChar=字符串,ch=> string.split.reducesum,c=>sum+c===ch,0; const countBs=string=>countCharstring,“B”; 控制台.logcountBs'BBC';
console.logcountChar'kakkerlak','k' 情人眼里出西施,但这里有一种方法可以通过使用:

"严格使用",; const countChar=字符串,ch=> string.split.reducesum,c=>sum+c===ch,0; const countBs=string=>countCharstring,“B”; 控制台.logcountBs'BBC';
console.logcountChar'kakkerlak','k' 不一定与ES6相关,但更具功能性的方法,例如使用过滤器在这里似乎很好:

const countChar=字符串,指针=> string.split .filterchar=>字符===指针 长 const countBs=string=>countCharstring,“B”; 控制台.logcountBs'BBC';
console.logcountChar'kakkerlak','k' 不一定与ES6相关,但更具功能性的方法,例如使用过滤器在这里似乎很好:

const countChar=字符串,指针=> string.split .filterchar=>字符===指针 长 const countBs=string=>countCharstring,“B”; 控制台.logcountBs'BBC'; console.logcountChar'kakkerlak','k' 你考虑过吗

提醒“kakkerlak”。匹配/k/g.length您考虑过吗


提醒“kakkerlak”。匹配/k/g.length这里有另一种缩短它的方法

"严格使用",; const countChar=string,ch=>string.splitch.length-1; const countBs=string=>countCharstring,“B”; 控制台.logcountBs'BBC';
console.logcountChar'kakkerlak','k' 这里有另一种缩短它的方法

"严格使用",; const countChar=string,ch=>string.splitch.length-1; const countBs=string=>countCharstring,“B”; 控制台.logcountBs'BBC';
console.logcountChar'kakkerlak','k';Crown teh winnar.string.matchnew RegExpch,'g'。length这是非常短的xD,我认为没有人会比它短,但我以前从未使用过正则表达式,所以这对我来说不是最友好的方法。但是我肯定会看看正则表达式来了解更多关于这个主题的信息。实际上,string.splitch.length-1比winnar.string.matchnew RegExpch短14个字节,'g'。length这是非常短的xD我不认为任何人会比这个短,但我以前从未使用过正则表达式,所以这对我来说不是最友好的方法。但是我肯定会看看正则表达式来了解更多关于这个主题的信息。实际上,string.splitch.length-1短了14个字节。我认为与其滥用true转换为1,false转换为0的事实,不如这样做:c===ch?1:0。@Gothdo你可以。我更喜欢这种情况,因为我只是想让它更紧凑。对我来说,它读起来也很好。如果字符匹配,则添加另一个字符。我认为,与其滥用true转换为1,false转换为0的事实,不如这样做:c===ch?1:0。@Gothdo你可以。我更喜欢这种情况,因为我只是想让它更紧凑。对我来说,它读起来也很好。如果字符匹配,请添加另一个。这确实要短得多,原始版本比我的版本长得多,而你的版本比我的版本短得多。我喜欢这样,我也喜欢这样的事实,我不应该想出这样的东西。如果你在构建这样的东西,你应该使用你的解决方案吗?当然,我在生产代码中使用它不会有问题,事实上我一直以类似的方式使用split这确实要短得多,原始版本比我的版本长得多,而你的版本比我的版本短得多。我喜欢这样,我也喜欢这样的事实,我不应该想出这样的东西。如果您正在构建这样的东西,您应该使用您的解决方案吗?当然,我在生产代码中使用它没有问题,事实上我一直以类似的方式使用split