0

メンバーおよび/または をdata含む場合と含まない場合があるオブジェクト があります。これらをテストし、1 つまたは両方が存在する場合は、ユーザーに警告します。site_with_same_coordssite_with_same_name

if (data.site_with_same_coords){
    var SameCoordsExists = true;
    same_coords_message = 'The site ';
    same_coords_message += data.site_with_same_coords.name;
    same_coords_message += 'already already exists in the location you have indicated';
}

if (data.site_with_same_name){
    var SameNameExists = true;
    same_name_message = 'The site ';
    same_name_message += data.site_with_same_name.name;
    same_name_message += 'already already exists in a differnt location from the one you have indicated';
}

if (SameCoordsExists && SameNameExists){
    if(data.site_with_same_name.id != data.site_with_same_coords.id){
        alert(same_coords_message + '\n' + same_name_message);
    }else if (SameCoordsExists){
        alert(same_coords_message);
    }
    }else if (SameNameExists){
        alert(same_name_message);
    }
}

これを行うより良い方法はありますか?

4

2 に答える 2

1

もちろん、それらを配列に入れて結合することもできます:

var messages = [];

if(data.site_with_same_coords) {
    messages.push('The site ' + data.site_with_same_coords.name + ' already exists in the location you have indicated');
}

if(data.site_with_same_name && !(data.site_with_same_coords && data.site_with_same_name.id === data.site_with_same_coords.id)) {
    messages.push('The site ' + data.site_with_same_name.name + ' already exists in a different location from the one you have indicated');
}

alert(messages.join('\n'));

また、次のメッセージを受け取った場合、ユーザーは少し混乱することはありません。

サイト some_site は、指定された場所に既に存在します
サイト some_other_site は、指定された場所とは別の場所に既に存在します

? ちょっとした考え。

于 2011-11-08T03:31:08.390 に答える
0

このスケルトン:

if (A && B) {
  if (C)
    print(msgA);
  print(msgB);
} else {
  print(msgA);
}

次のように書き換えることができます。

var AB = A && B;
if ((AB && C) || !AB)
  print(msgA);
if (AB)
  print(msgB);

ご覧のとおり、一度しか表示されmsgAないmsgBため、印刷された場所でその場で文字列を作成できます. 明らかに、あなたの場合、 、、 CにAなります。data.site_with_same_coordsBdata.site_with_same_namedata.site_with_same_name.id != data.site_with_same_coords.id

言うまでもなく、書き直されたバージョンは読みにくくなっています。

更新: 本当に alert() が必要な場合は、次のようにします。

var AB = A && B;
if ((AB && C) || !AB)
  msg += msgA;
if (AB)
  msg += msgB;
if (msg)
  alert(msg);
于 2012-04-30T11:18:42.217 に答える