Hai*_*ter 1 javascript underscore.js
这必须如此简单,但我无法弄清楚如何计算一系列事物中的子串数.在下划线的任何东西我都错过了吗?
var foo = ["fred", "ted", "medical", "car"]
function howManySubstringsInArray(arr, word){
var i = arr.length,
j = 0;
while (i) if (arr[--i].indexOf(word))++j;
return j;
}
howManySubstringsInArray(foo, 'ed')
Output => 3
Run Code Online (Sandbox Code Playgroud)
这不起作用.
假设你不关心重复比赛中的每个数组元素,可以filter在阵列找到匹配的元素:
注意:这是标准的ECMAScript 5功能,而不是下划线.在上面的链接中有旧版浏览器的垫片.
function howManySubstringsInArray(arr, word) {
return arr.filter(function(v) {
return v.indexOf(word) >= 0;
}).length;
}
Run Code Online (Sandbox Code Playgroud)
严格来说,这是创建一个稍微浪费的新数组,因为我们所做的只是计算元素,但对于"小"列表来说无关紧要.
无论如何,裸循环实际上都能很好地工作 - 你只需要确保循环结构正确,并且你实际上看看.indexOf调用的结果.您现有的向后迭代使得循环条件比它们需要的更难以遵循:
function howManySubstringsInArray(arr, word) {
var i = 0, n = arr.length, count = 0;
for ( ; i < n; ++i) {
if (arr[i].indexOf(word) >= 0) {
++count;
}
}
return count;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4835 次 |
| 最近记录: |