假设我在 JavaScript 中有以下对象:
var object = {
"key1": "value1",
"key2": "value2",
"key3": "value3"
};
如何找出对象中存在多少个值?
假设我在 JavaScript 中有以下对象:
var object = {
"key1": "value1",
"key2": "value2",
"key3": "value3"
};
如何找出对象中存在多少个值?
你可以使用这个简单的代码来做到这一点:
Object.keys(myObject).length
没有简单的答案,因为Object——JavaScript 中的每个对象都源自——自动包含许多属性,而您获得的确切属性集取决于特定的解释器以及在您之前执行的代码。因此,您必须以某种方式将您定义的那些与您“免费”获得的那些分开。
这是一种方法:
var foo = {"key1": "value1", "key2": "value2", "key3": "value3"};
Object.prototype.foobie = 'bletch'; // add property to foo that won't be counted
var count = 0;
for (var k in foo) {
if (foo.hasOwnProperty(k)) {
++count;
}
}
alert("Found " + count + " properties specific to foo");
第二行显示了其他代码如何向所有Object派生类添加属性。如果删除hasOwnProperty()循环内的检查,则属性计数将上升到至少 4。在除此代码之外还有其他 JavaScript 的页面上,如果其他代码也修改了Object原型,则它可能会高于 4 。
使用下划线库,非常有用:_.keys(obj).length.
您可以遍历对象以获取键或值:
function numKeys(obj)
{
var count = 0;
for(var prop in obj)
{
count++;
}
return count;
}
它看起来像一个“拼写错误”但只是想指出你的例子是无效的语法,应该是
var object = {"key1":"value1","key2":"value2","key3":"value3"};
var miobj = [
{"padreid":"0", "sw":"0", "dtip":"UNO", "datos":[]},
{"padreid":"1", "sw":"0", "dtip":"DOS", "datos":[]}
];
alert(miobj.length) //=== 2
但
alert(miobj[0].length) //=== undefined
这个功能很好
Object.prototype.count = function () {
var count = 0;
for(var prop in this) {
if(this.hasOwnProperty(prop))
count = count + 1;
}
return count;
}
alert(miobj.count()) // === 2
alert(miobj[0].count()) // === 4