在javascript中计算关键字数组中字符串的出现次数

Ste*_*den 2 javascript regex arrays string count

我有一个数组:

var locations = ['Afghanistan','Albania','Algeria','New York'];
Run Code Online (Sandbox Code Playgroud)

和一个字符串:

var string = 'I love Afghanistan New York Afghanistan Andorra Andorra Algeria New York';
Run Code Online (Sandbox Code Playgroud)

我想计算数组中每个关键字出现在字符串中的次数,但无法找出最佳方法.

Chr*_*sen 5

这是我的版本:

function countItems(a, s) {
    var x, i, output = {};
    for (x = 0; x < a.length; x++) {
        i = 0;
        output[a[x]] = 0;
        while ((i = s.indexOf(a[x], i)) > -1) {
            output[a[x]]++;
            i++
        }
    }
    return output;
}

var result = countItems(locations, string);
// result['Albania'] === 0
Run Code Online (Sandbox Code Playgroud)

在这里尝试一下.