字符串拆分并计算出现次数

Che*_*tan 5 javascript string jquery split

我有一个字符串

var stringIHave = "Java$$Java$$jQuery$$Java$$jQuery$$Java$$Java$$Java$$Hibernate$$Java$$Java$$Spring$$Instagram$$jQuery$$jQuery$$";
Run Code Online (Sandbox Code Playgroud)

如何计算每个条目的出现次数,我得到的是来自JSON,如Java = 8等...

ant*_*rat 6

首先,你需要将你的srting分成数组:

var keywordsArr = stringIHave.split( '$$' );
Run Code Online (Sandbox Code Playgroud)

那么你需要有一个对象来存储计数:

var occur = {};
Run Code Online (Sandbox Code Playgroud)

然后只需创建简单的for循环来计算所有出现次数:

for( var i = 0; i < keywordsArr.length; i++ ) {
    occur[ keywordsArr[ i ] ] = ( occur[ keywordsArr[ i ] ] || 0 ) + 1;
}
Run Code Online (Sandbox Code Playgroud)

现在,您的对象occur将具有名称作为键并计为值.

请参阅jsFiddle 演示.

另外,就像你在字符串末尾一样,$$你可能需要删除最后一项,keywordsArr所以只需在split函数调用后执行:

keywordsArr.pop();
Run Code Online (Sandbox Code Playgroud)

查看没有last元素的demo.

所以最终的代码将是:

var stringIHave = "Java$$Java$$jQuery$$Java$$jQuery$$Java$$Java$$Java$$Hibernate$$Java$$Java$$Spring$$Instagram$$jQuery$$jQuery$$",
  keywordsArr = stringIHave.split( '$$' ),
  occur = {};

keywordsArr.pop();

for( var i = 0; i < keywordsArr.length; i++ ) {
    occur[ keywordsArr[ i ] ] = ( occur[ keywordsArr[ i ] ] || 0 ) + 1;
}

for( var key in occur ) {
    document.write( key + ' - ' + occur[key] + '<br/>' );        
} ?
Run Code Online (Sandbox Code Playgroud)


Dav*_*mas 5

我建议如下:

function stringCount(haystack, needle) {
    if (!needle || !haystack) {
        return false;
    }
    else {
        var words = haystack.split(needle),
            count = {};
        for (var i = 0, len = words.length; i < len; i++) {
            if (count.hasOwnProperty(words[i])) {
                count[words[i]] = parseInt(count[words[i]], 10) + 1;
            }
            else {
                count[words[i]] = 1;
            }
        }
        return count;
    }
}

console.log(stringCount("Java$$Java$$jQuery$$Java$$jQuery$$Java$$Java$$Java$$Hibernate$$Java$$Java$$Spring$$Instagram$$jQuery$$jQuery$$", '$$'));
?
Run Code Online (Sandbox Code Playgroud)

JS小提琴演示.

参考文献:


小智 1

现在你可以做

    const str = "Java$$Java$$jQuery$$Java$$jQuery$$Java$$Java$$Java$$Hibernate$$Java$$Java$$Spring$$Instagram$$jQuery$$jQuery$$";
    
    var result = str.split("$$").reduce(function(acc, curr) {
    curr &&  (acc[curr] = (acc[curr] + 1) || 1);
    	return acc
    }, {});
    console.log(result);
Run Code Online (Sandbox Code Playgroud)