あなたは得ることができません
var data = [14:"A",5:"IMG",2:"SPAN"]
これは有効な JavaScript ではないためです。また、カウントが異なるタグで同様になる場合、重複したキーが取得されます。キーと値を入れ替えて、JavaScript オブジェクトを使用します。
var reduced = {A: 14, IMG: 6, SPAN: 2};
Ecmascript 5 では:
var data = ["A","A","A","IMG","IMG","A","A","IMG","A","A","IMG","A","A","IMG","IMG","A","A","A","A","A","SPAN","SPAN"];
var reduced = data.reduce(function (result, item) {
result[item] = (result.hasOwnProperty(item) ? result[item] : 0) + 1;
return result;
}, {});
console.log(reduced); // Object {A: 14, IMG: 6, SPAN: 2}
ここでjsFiddle
「reduce」なしでブラウザーをサポートする必要がある場合は、underscore.jsで reduce を見つけることができます。
var reduced = _.reduce(data, function (result, item) {
result[item] = (result.hasOwnProperty(item) ? result[item] : 0) + 1;
return result;
}, {});
ここにアンダースコアを付けたjsFiddle