我该如何检查这个物体的长度?

时间:2012-07-12 23:06:35

标签: javascript jquery html arrays

我正在使用jquery-tokeninput

的大量修改版本

它本质上是一个文本输入框,允许多个标签就像堆栈溢出一样。

通过运行此命令,您可以获得当前输入中所有标记的返回值:

$("#no-custom-tokens").tokenInput("get")

问题是,它为我返回以下内容:

enter image description here

如果我尝试拨打$("#no-custom-tokens").tokenInput("get").length,则说明未定义。

我需要检查这个对象中是否有u1,u2等(基本上......输入为空白)。

我考虑过......

if ($("#no-custom-tokens").tokenInput("get").u1.name != "")

除非您删除令牌,然后再添加2个,它不会从u1开始,u2 ...它从u3和u4开始。

:/

3 个答案:

答案 0 :(得分:1)

  

“我需要检查此对象中是否有任何u1,u2等(基本上......是输入空白)。”

如果你基本上需要检查是否存在至少一个属性,并且属性是可枚举的,你可以这样做......

var has_props = false,
    obj = $("#no-custom-tokens").tokenInput("get");

for (var p in obj) {
    has_props = true;
    break;
}

console.log(has_props);

如果你想知道有多少,如果它们是可枚举的,你可以使用Object.keys ......

var props_len = Object.keys($("#no-custom-tokens").tokenInput("get")).length;

如果你支持旧浏览器,你只需要填充它......

if (!Object.keys)
    Object.keys = function(o) {
        var keys = [];
        for (var k in o)
            if (o.hasOwnProperty(k))
                keys.push(k);

        return keys;
    };

答案 1 :(得分:1)

它看起来像是作为对象而不是数组返回,因此没有.length方法。如果您只想检查对象中是否有任何内容,您可以尝试遍历该对象并在找到任何内容时设置标志。所以:

var isEmpty = true;
var tokens = $("#no-custom-tokens").tokenInput("get");
for (var i in tokens) {
    isEmpty = false;
    break;
}
if (isEmpty) {
    ...
}

答案 2 :(得分:1)

检查它是否为空:

function isEmpty(obj) {
    for (var i in obj) {
        if (obj.hasOwnProperty(i)) return false;
    }
    return true;
}

检查其长度:

function objectLength(obj) {
    var size = 0;
    for (var i in obj) {
        if (obj.hasOwnProperty(i)) ++size;
    }
    return size;
}

// or:

function objectLength(obj) {
    return Object.keys(obj).length;
}