如何统计TypeScript数组中含'abc'的元素数量?求简便实现方法
简便统计数组中包含指定字符串的元素个数
嘿,当然有更简洁的实现方式啦!TypeScript依托ES6+的数组API就能轻松搞定,不用写繁琐的手动循环,代码更清晰易读:
方法1:filter + length 直观筛选计数
先通过filter筛选出所有包含'abc'的元素,再直接取筛选后数组的长度,这是最易懂的写法:
let list: Array<string> = ['abc', 'efg', 'abcde', 'eefg']; const matchCount = list.filter(item => item.includes('abc')).length; console.log(matchCount); // 输出:2
这里用includes('abc')判断元素是否包含目标字符串,比indexOf !== -1的语义更直白,TypeScript完全支持这个ES6方法。如果你的运行环境偏老,也可以替换成item.indexOf('abc') !== -1,效果完全一致。
方法2:reduce 直接累加计数
要是你想避免创建额外的中间数组(虽然大部分场景下性能差异可以忽略),用reduce能一步完成计数:
const matchCount = list.reduce((total, currentItem) => { return currentItem.includes('abc') ? total + 1 : total; }, 0); console.log(matchCount); // 输出:2
把reduce的初始值设为0,每遍历一个元素就判断是否符合条件,符合的话就给累加器加1,最后得到的就是符合要求的元素总个数。
这两种都是声明式的写法,比起手动写循环,代码的意图更明确,日常开发里用得非常频繁~
内容的提问来源于stack exchange,提问作者user1765862
相关产品推荐
相关产品推荐

