Javascript计数功能的大括号中的键

时间:2012-05-17 13:54:32

标签: javascript key braces

我调用这样的函数:

update_insert('information',{
    element_id: 1,
    type: 'menu',
    info: 'Hi how are ya?',
    new_window: ''
});

功能是:

function update_insert(table,data){
    alert(data.length);
}

我正在尝试获取插入函数的键的数量,并最终通过循环动态获取键的名称。我怎样才能做到这一点?

6 个答案:

答案 0 :(得分:4)

对象在JavaScript中没有像数组那样的.length属性。您需要使用函数来计算对象中的项目数:

getObjectLength = function(obj) {

    var size = 0, key;

    for (key in obj) {
        if (obj.hasOwnProperty(key))
            size++;
    }

    return size;
}

修改

从对象获取密钥:

getObjectKeys = function(obj) {

    var keys = [];

    for (var key in obj) {
        keys.push(key);
    }

    return keys;
}

答案 1 :(得分:1)

您可以使用以下功能获取密钥(在旧版浏览器中可以安全使用)...

var getObjectKeys = function(obj) {

    if (Object.keys && typeof Object.keys == "function") {
        return Object.keys(obj);
    }

    var prop, keys = [];

    for (prop in obj) {
        if (obj.hasOwnProperty(prop)) {
            keys.push(prop);
        }
    }

    return keys;
}

jsFiddle

或者,使用Object.keys()并为旧浏览器使用等效的[shim][2]

您可以检查返回的length的{​​{1}}属性,以确定密钥数量。


如果要挖掘原型链上的所有可枚举属性,可以使用...

Array

jsFiddle


或者,您可能非常希望使用对象的var getObjectKeysIncludingInherited = function(obj) { var keys = [], i = 0; for (keys[i++] in obj); return keys; } 属性来执行此操作,但请不要。增加本机JavaScript对象被认为有点危险,而且它有点令人困惑(length没有Object属性但length属性)并且它在旧版本中不起作用浏览器...

Array

jsFiddle

答案 2 :(得分:0)

也许是这样的事情?

function update_insert(table,data){
    var dataLength = 0, keys = [];

    for(prop in data) {
        if(data.hasOwnProperty(prop)) {
            dataLength++;
            keys.push(prop);
        }
    }
}

数组实际上是具有自定义length属性的对象(以及其他一些东西:P),因此并非所有对象都具有length属性。

答案 3 :(得分:0)

var names = new Array();

for(name in data)
{
  if(data.hasOwnProperty(name))
  {
    names.push(name); 
  }
}

names.length - will give you what you need.

答案 4 :(得分:0)

var keys = [];
for(var k in data) {
  if(Object.prototype.hasOwnProperty(data, k)) {
    keys.push(data[k]);
  }
}
k.length //size of keys

答案 5 :(得分:0)

如果您是jQuery粉丝或潜在用户:

var size = 0;

$.each(obj, function(key, value) {
    alert('key = ' + key);
    alert('value = ' + value);
    size++;
});

alert(size);