0

我试图找到一种方法在对象中有空值时发出警报,如果它存在,它应该警报失败,如果没有,它会继续另一个动作。目前我能够提醒每个键。使用此代码:

var ave = {
 'a': '02',
 'b': '04',
 'c': '',
 'd': '',
 'f': '07'
 };

var total = 0
$.each(ave, function(key, value) {
  var numbersA = total + value.length;
    if (numbersA === 0) {
       alert("Fail!");
     } else {
       alert("Pass!");
     }
});

它弹出失败!两次并通过 3 次。即使对象中存在单个空值,我也希望它警告失败。有办法吗?

4

4 回答 4

2

我会使用for in循环;jQueryjQuery.each不太适合这种情况。

var ave = {
 'a': '02',
 'b': '04',
 'c': '',
 'd': '',
 'f': '07'
};

var success = true;

for(var x in ave) {
    if(ave.hasOwnProperty(x)) {
        if(ave[x] === '') {
            success = false;
            break;
        }
    }
}

if(success) {
    alert('Pass!');
} else {
    alert('Fail!');
}
于 2012-07-04T23:56:43.877 回答
1

failed如果任何属性为空,只需设置一个名为的全局变量并更改其值:

var ave = {
 'a': '02',
 'b': '04',
 'c': '',
 'd': '',
 'f': '07'
 };

var failed = false;
var total = 0;
$.each(ave, function(key, value) {
  var numbersA = total + value.length;
    if (numbersA === 0) {
       failed = true;
    }
});
if (failed)
    alert("Fail!");

另外,请注意,我正在使用您的方法来检查null值,这是不正确的。如果你想实际检查null值,你会改变

if (numbersA === 0) {
    failed = true;
}

if (numbersA === null) {
    failed = true;
}

然后,如果您想ave失败,您还需要将空字符串更改null为:

 var ave = {
 'a': '02',
 'b': '04',
 'c': null,
 'd': null,
 'f': '07'
 };
于 2012-07-04T23:54:01.913 回答
1

你可以在这里测试下面的代码,玩弄两组数据。请注意,默认值为“ave_success”,因此警报“成功!” 打开链接时会弹出。

将 "$.each(ave_success" 更改为 "$.each(ave_fail" 以验证拒绝错误数据。

请注意,空字符串 '' 不被视为 null

'' === null

将返回 false

var ave_fail = {
  'a': '02',
  'b': '04',
  'c': '',
  'd': '',
  'f': '07'
};

var ave_success = {
  'a': '02',
  'b': '04',
  'f': '07'
};

var total = 0
var success = true;

$.each(ave_success, function(key, value) {
  var numbersA = total + value.length;
  if (numbersA === 0) {
    alert("Fail on index " + key + ' !');
    success = false;
    return false;
  }
});

if (success) alert("Success !");

​</p>

于 2012-07-05T00:01:24.887 回答
0

我错过了,但最短的一个

var ave = {
  'a': '1',
  'b': '04',
  'c': '4',
  'd': '',
  'f': '1'
};

(function(){
    var v='Success';    
    for(var x in ave) if(!ave[x]) { v='Fail'; break;}
    alert(v);    
})();

演示。

或者

function is_falsy(arg){
  var what=true;    
  for(var x in arg) if(!arg[x]) { what=false; break;}
  return what;    
}
alert(is_falsy(ave));

演示。

于 2012-07-05T00:23:42.840 回答