[英]calculate the occurence and store the result in a key value-pair using javascript
我需要計算名稱在數組中的出現。
var eachAuthorData = ["bob","joke","hello","stack","stack","ok","joke","bob"];
我可以通過使用for循環來做到這一點,並得到這樣的結果
{bob: 2, joke: 2, hello: 1, stack: 2, ok: 1}
但結果只能是使用
counts["bob"]
我不僅需要知道每個名字的出現。 但還需要知道數組eachAuthorData中有多少個不同的名稱我如何在eachAuthorData中找到bob我只需要使用一次名稱
如果以數組開頭:
var eachAuthorData = ["bob","joke","hello","stack","stack","ok","joke","bob"];
並且您想知道數組中每個名稱有多少個,以及有多少個唯一的字符串,可以這樣做:
var counts = {}, i, item, uniques = 0;
for (i = 0; i < eachAuthorData.length; i++) {
item = eachAuthorData[i];
if (!counts.hasOwnProperty(item)) {
counts[item] = 1;
++uniques;
} else {
++counts[item];
}
}
這將產生如下counts
的輸出:
{bob: 2, joke: 2, hello: 1, stack: 2, ok: 1}
並且,由於您在注釋中提出了其他一些問題,因此我添加了變量uniques
,該變量為您提供了總的唯一字符串數。
並且,您將訪問任何單個計數,如下所示:
var cnt = counts["bob"];
或者,如果所需的鍵在名為key
的變量中,則可以使用:
var cnt = counts[key];
如果要迭代所有唯一字符串的所有計數,則可以這樣進行:
for (var item in counts) {
// item is the key
// counts[item] is the count
console.log("counts[" + item + "] = " + counts[item]);
}
工作演示: http : //jsfiddle.net/jfriend00/eJyAg/
如果要獲取counts對象中鍵的列表(例如,唯一字符串),可以使用:
var keys = Object.keys(counts);
Object.keys()
需要IE9或更高版本,或者如果您想與IE的較早版本進行互操作,請在此處使用polyfill。
我認為您應該具有:
var eachAuthorData = ["bob","joke","hello","stack","stack","ok","joke","bob"];
這樣做計算:
var toMatch, i, count;
toMatch = "bob";
count = 0;
for( i=0 ; i<eachAuthorData.length ; ++i ){
if( eachAuthorData[i] == toMatch ){
++count;
}
}
console.log("The element "+ toMatch +" is counted "+ count +" times!");
試試這個
var tempObject = new Object();
function count() {
array_elements = ["bob","joke","hello","stack","stack","ok","joke","bob"];
array_elements.sort();
var current = null;
var cnt = 0;
for (var i = 0; i < array_elements.length; i++) {
if (array_elements[i] != current) {
if (cnt > 0) {
tempObject[current]=cnt;
console.log(current + ' comes --> ' + cnt + ' times<br>');
}
current = array_elements[i];
cnt = 1;
} else {
cnt++;
}
}
if (cnt > 0) {
console.log(current + ' comes --> ' + cnt + ' times');
tempObject[current]=cnt;
}
}
count();
console.log(JSON.stringify(tempObject));
大概你的意思是這樣的數組:
var data = ["bob","joke","hello","stack","stack","ok","joke","bob"];
由於其他人走了明顯的路,我將發布一些更健壯的方法,以說明數據數組已刪除成員的可能性(即稀疏):
function countMembers(dataArray) {
for (var i=0, iLen=dataArray.length, o={}, item; i<iLen; i++) {
item = dataArray[i];
if (dataArray.hasOwnProperty(i)) {
if (o.hasOwnProperty(item)) {
++o[item];
} else {
o[item] = 1;
}
}
}
return o;
}
鑒於:
["bob","joke",,,,"hello","stack","stack","ok","joke","bob"];
其他將包括一個undefined: 3
成員undefined: 3
,但是上面沒有。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.