配列の値の数を数える
配列の値の数を数えるには、次の方法で可能です。
関数定義
/**
* 配列の値の数を数える
* @param {any[]} targetArray 数える配列
* @return {any[]} 数えられた配列を返す
* /
var countDuplicateValueInArray = function(targetArray) {
var results = [], i = 0, len = 0;
var unique = function(array) {
var storage = {}, uniqueArray = [], value = '';
for (var i = 0, len = array.length; i < len; i++) {
value = array[i];
if (!(value in storage)) {
storage[value] = true;
uniqueArray.push(value);
}
}
return uniqueArray;
};
var inArray = function(searchValue, arrayData) {
var key, result = -1;
if (typeof searchValue !== 'string' && typeof searchValue !== 'number') return -1;
if (!arrayData || typeof arrayData === 'object') return -1;
for (key in arrayData) {
if (arrayData[key] === searchValue) {
result = key;
break;
}
}
return result;
};
if (!targetArray || targetArray.length === 0) return [];
var searchValues = unique(targetArray), counts = [], countIndex = 0, searchIndex = -1;
for (i = 0, len = targetArray.length; i < len; i++) {
searchIndex = inArray(targetArray[i], searchValues);
if (searchIndex !== -1) {
if (!counts[searchIndex]) counts[searchIndex] = 0;
counts[searchIndex]++;
}
}
if (counts.length === 0) return [];
for (i = 0, len = searchValues.length; i < len; i++) {
results[i] = { value : searchValues[i], count : counts[i] };
}
return results;
};
使い方
引数
引数名 | 型 | 説明 | |
---|---|---|---|
第一引数 必須 |
targetArray | Array | 数える配列 |
戻り値
[{ value : 検索文字列, count : 検出数 } ...]
の形式で返します。
サンプルコード
JavaScript
var arr = ['ddd', 'aaa', 'bbb', 'ccc', 'aaa', 'aaa', 'aaa', 'ccc', 'ccc', 'ccc', 'bbb'];
var counts = countDuplicateValueInArray(arr);
alert(counts);