我们最近一直在使用 javascript“哈希”,我们一直在寻找一种通用的方法来计算数组和哈希中包含的项目,而无需“知道”我们正在处理的项目,除了 count 方法。众所周知,.length 是无用的,因为它只返回数组中最高索引的值。我们下面的内容不起作用,因为哈希对 Array 测试为真,但返回的长度值对于哈希来说是废话。我们最初将整个项目中的 .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;
}