0

オブジェクトに null 値がある場合に警告する方法を見つけようとしています。存在する場合は警告が失敗し、そうでない場合は別のアクションを続行します。現在、キーごとにアラートを出すことができません。このコードで:

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!");
     }
});

ポップアップします Fail! 2回とパス3回。オブジェクトに単一の null 値が存在する場合でも、失敗を警告する必要があります。それを行う方法はありますか?

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

ここで次のコードをテストし、2 つのデータ セットを試してみることができます。デフォルトは「ave_success」であるため、「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 に答える
1

という名前のグローバル変数を設定しfailed、プロパティのいずれかが null の場合はその値を変更するだけです。

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 に答える
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 に答える