![](/img/trans.png)
[英]Count the number of occurrences of a character in a string in Javascript
[英]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.