簡體   English   中英

字符串拆分並計算出現次數

[英]String split and count the number of occurrences and also

我有一個字符串

var stringIHave = "Java$$Java$$jQuery$$Java$$jQuery$$Java$$Java$$Java$$Hibernate$$Java$$Java$$Spring$$Instagram$$jQuery$$jQuery$$";

如何計算每個條目的出現次數,我得到的是來自JSON,如Java = 8等...

首先,你需要將你的srting分成數組:

var keywordsArr = stringIHave.split( '$$' );

那么你需要有一個對象來存儲計數:

var occur = {};

然后只需創建簡單的for循環來計算所有出現次數:

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

現在你的對象occur將名稱作為鍵並計為值。

請參閱jsFiddle 演示

另外,當你在字符串$$結束時,你可能需要從keywordsArr刪除最后一項,所以只需在split函數調用后執行:

keywordsArr.pop();

查看沒有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/>' );        
} ​

我建議如下:

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$$", '$$'));
​

JS小提琴演示

參考文獻:

目前還不完全清楚最終目標是什么。 下面從字符串創建一個看起來像的對象

對象創建:

{
 "Java": 8,
 "jQuery": 4,
 "Hibernate": 1,
 "Spring": 1,
 "Instagram": 1
}

JS:

var str = 'Java$$Java$$jQuery$$Java$$jQuery$$Java$$Java$$Java$$Hibernate$$Java$$Java$$Spring$$Instagram$$jQuery$$jQuery$$';
var arr = str.split('$$')
var obj = {};

for (i = 0; i < arr.length; i++) {
    if (arr[i] != '') {
        if (!obj[arr[i]]) {
            obj[arr[i]] = 0;
        }
        obj[arr[i]]++;

    }
}

您可以遍歷對象以獲取所有值,或只是查找一個值

var jQueryOccurences= obj['jQuery'];

演示: http//jsfiddle.net/25hBV/1/

將字符串拆分為一個數組,並將數組放入一個對象中處理重復項,並將出現的事件計算為對象中的鍵/值對,請參閱小提琴!

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

for (var i=s.length; i--;) {
    obj[s[i]] = (s[i] in obj) ? obj[s[i]]+1 : 1;
}

//    obj.Java == 8

小提琴

如果你想要它簡短而甜美:

// variable declarations
var arParts = stringIHave.match(/\w+/g), 
    result = {}, 
    i = 0, 
    item;

// Copy the array to result object      
while (item = arParts[i++]) result[item] = (result[item] || 0 ) + 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); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM