给出以下字符串
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
答案 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);