私たちは最近 JavaScript の「ハッシュ」を頻繁に使用しており、count メソッド以外で扱っているものを「知る」必要なく、配列とハッシュの両方に含まれる項目をカウントする普遍的な方法を探していました。誰もが知っているように、配列内の最大のインデックスの値のみを返すため、.length は役に立ちません。以下にあるものは機能しません。なぜなら、ハッシュは Array に対して true をテストするからです。当初、プロジェクト全体で .length を Object.keys().length に置き換えましたが、これは IE8 以前ではサポートされていません。
これは非常にばかげた単純なことであり、機能させることができないようです。助けて、オビワン。あなたは私の唯一の希望です!
function isNullOrUndefined(aObject) {
"use strict";
return (typeof aObject === 'undefined' || aObject === null);
}
function count(aList) {
"use strict";
var lKey = null,
lResult = 0;
if (!isNullOrUndefined(aList)) {
if (aList.constructor == Array) {
lResult = aList.length;
} else if (!isNullOrUndefined(Object.keys)) {
lResult = Object.keys(aList).length;
} else {
for (lKey in aList) {
if (aList.hasOwnProperty(lKey)) {
lResult++;
}
}
}
}
return lResult;
}