在jquery中找到对象的大小

时间:2013-09-27 05:44:10

标签: javascript jquery

js code:

    $.each(data, function (key, value) {
            if(key == 'REGEXP' || there is only one object in data){
                $changableValidationType.append('<option selected="selected" value="'+key+'">'+value+'</option>');                    
            }
            else
                $changableValidationType.append('<option value="'+key+'">'+value+'</option>');
    });

如果数据中只有一个对象或其REGEXP,那么我想让它被选中=&#34;选择&#34;,

3 个答案:

答案 0 :(得分:0)

试试这个:

if(key == 'REGEXP' || (typeof data =="object" && data.length == 1) || typeof data == "undefined"){

如果需要定义数据,你可以进行最后一次检查,如果没有定义数据,我不确定如何进入。

答案 1 :(得分:0)

我假设您要检查data

中的对象长度
 $.each(data, function (key, value) {
            if(key == 'REGEXP' || (typeof(value)== object && value.length == 1)){
                $changableValidationType.append('<option selected="selected" value="'+key+'">'+value+'</option>');                    
            }
            else
                $changableValidationType.append('<option value="'+key+'">'+value+'</option>');
    });

答案 2 :(得分:0)

我认为你必须使用这样的东西。 jsFiddle

var size = assocArrayLength(data);
if (data['REGEXP'] || size === 1) {
    var key = Object.keys(data)[0];
    var value = data[key];

    console.log(key + ":" + value);
    $changableValidationType.append('<option selected="selected" value="' + key + '">' + value + '</option>');
} else {
    console.log(size);

    for(var key in data){
        $changableValidationType.append('<option value="' + key + '">' + data[key] + '</option>');
    }
}

function assocArrayLength(arr){
    var size = 0, key;
    for (key in arr) {
        if (arr.hasOwnProperty(key)) size++;
    }
    return size;
};

因为关联数组在JavaScript中的行为与普通数组不同。有关详细信息,您可以在这些数组中阅读有关大小的更详细答案 here