计算对象的键/属性数量的最快方法是什么?是否可以在不迭代对象的情况下做到这一点?即,不做:
var count = 0;
for (k in myobj) if (myobj.hasOwnProperty(k)) ++count;
(Firefox 确实提供了一个神奇的 __count__
属性,但它在版本 4 左右被删除了。)
原文由 mjs 发布,翻译遵循 CC BY-SA 4.0 许可协议
计算对象的键/属性数量的最快方法是什么?是否可以在不迭代对象的情况下做到这一点?即,不做:
var count = 0;
for (k in myobj) if (myobj.hasOwnProperty(k)) ++count;
(Firefox 确实提供了一个神奇的 __count__
属性,但它在版本 4 左右被删除了。)
原文由 mjs 发布,翻译遵循 CC BY-SA 4.0 许可协议
你可以使用这段代码:
if (!Object.keys) {
Object.keys = function (obj) {
var keys = [],
k;
for (k in obj) {
if (Object.prototype.hasOwnProperty.call(obj, k)) {
keys.push(k);
}
}
return keys;
};
}
然后你也可以在旧浏览器中使用它:
var len = Object.keys(obj).length;
原文由 Renaat De Muynck 发布,翻译遵循 CC BY-SA 3.0 许可协议
13 回答12.9k 阅读
7 回答2k 阅读
3 回答1.2k 阅读✓ 已解决
2 回答1.3k 阅读✓ 已解决
6 回答1.1k 阅读✓ 已解决
6 回答1k 阅读
2 回答1.3k 阅读✓ 已解决
要在任何 _ES5 兼容的环境_ 中执行此操作,例如 Node.js 、Chrome、 Internet Explorer 9+ 、Firefox 4+ 或 Safari 5+:
浏览器兼容性
Object.keys 文档(包括一个可以添加到非 ES5 浏览器的方法)