如何获得字符串出现的明显计数

时间:2017-04-13 15:25:36

标签: javascript arrays

给出以下字符串

A7sus4, A, A#, A#4, A#7, A#dim, B11, Bm6, Gmaj7

我想得到每个数据块的第一个值,如此

A, A, A, A, A, A, B, B, G

然后进一步将其分解,以便最后得到每个不同事件的计数

A,6
B,2
G,1

2 个答案:

答案 0 :(得分:1)

您可以使用哈希表进行计数,其中根绳符号是键。



var data = [{ cordname: 'A7sus4', fingering: '002030', fret: 1 }, { cordname: 'A', fingering: 'x02220', fret: 1 }, { cordname: 'A#', fingering: 'x13331', fret: 1 }, { cordname: 'A#4', fingering: 'xx3341', fret: 1 }, { cordname: 'A#7', fingering: 'xx1112', fret: 3 }, { cordname: 'A#dim', fingering: 'xx2323', fret: 1 }, { cordname: 'B', fingering: '', fret: -1 }],
    count = Object.create(null);

data.forEach(a => count[a.cordname[0]] = (count[a.cordname[0]] || 0) + 1);
console.log(count);




第二次尝试,对于已编辑的问题,分割astring并对字符串的第一个字符进行分析。



var data = 'A7sus4, A, A#, A#4, A#7, A#dim, B11, Bm6, Gmaj7'.split(', '),
    count = Object.create(null);

data.forEach(a => count[a[0]] = (count[a[0]] || 0) + 1);
console.log(count);




答案 1 :(得分:0)

假设

var d = ["A","B","A","A","A","C","A","C"];

然后

['A','B','C'].forEach(x => console.log(x, d.filter(f => (f==x)).length));

假设第一个数组列出要查找的注释。

抓取结果对象

var r = {};
['A','B','C','D'].forEach(x => r[x] = d.filter(f => (f==x)).length);