我有一个对象data
,可能包含也可能不包含成员site_with_same_coords
和/或site_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);
}
}
有更好的方法吗?
答案 0 :(得分: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已存在于与您指示的位置不同的位置
?只是一个想法。
答案 1 :(得分: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
只出现一次,因此您可以在打印时立即创建字符串。显然,在您的情况下,A
为data.site_with_same_coords
,B
为data.site_with_same_name
,C为data.site_with_same_name.id != data.site_with_same_coords.id
。
毋庸置疑,重写版本的可读性要低得多。
更新:如果你真的需要提醒()那么你会做:
var AB = A && B;
if ((AB && C) || !AB)
msg += msgA;
if (AB)
msg += msgB;
if (msg)
alert(msg);