Поиск размера объекта внутри jquery каждый

Код js:

$.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 есть только один объект, я хочу сделать его выбраным = "selected",

3 ответа

Я предполагаю, что вы хотите проверить длину объектов внутри 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>');
 });


Я думаю, вы должны использовать что-то вроде этого. 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. Для получения дополнительной информации вы можете прочитать более подробный ответ о размере в этих массивах здесь


попробуй это:

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

вы можете взять последнюю проверку, если данные должны быть определены, im не совсем уверен, как вы попадете туда, если данные не были определены.

licensed under cc by-sa 3.0 with attribution.