JS怎么判断多个对象相等

sweetyane 2013-03-02 04:44:32
因为在做合并单据功能,可能有多张单据(十张以上)需要进行判断后才能合并,1.选择的所有单据的单据状态必须相同,2.它们的单据类型相同,3.单号相同,4.收货方与发货方相同
我写的JS如下,但是只能判断两个,用户选择了三张单据,其中两张符合合并条件,一张不符合,就判断不出来了
希望高手帮我看下代码:

var array = jQuery('#dataTable').datagrid('getSelections');
if (array.length <= 1) {
jQuery.messager.alert("警告", "请选择您要合并的单据!", "warning");
return;
}
var isflag = true;
for ( var i = 0; i < array.length; i++) {
for ( var j = i + 1; j < array.length; j++) {
if (array[i].orig == array[j].orig
&& array[i].dest == array[j].dest
&& array[i].opStatus == array[j].opStatus
&& array[i].informId == array[j].informId
&& array[i].billtype == array[j].billtype) {
isflag = false;
break;
}
}
}
if (isflag == true) {
jQuery.messager.alert("警告",
"<br>选择合并的多张单据必须符合以下条件才能进行合并:
<br>1.单据状态相同;
<br>2.单据类型相同;
<br>3.外协通知单号相同;
<br>4.收货方与发货方相同。","warning")
}else {
alert("条件符合,可以合并");
}

...全文
295 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
sweetyane 2013-03-04
  • 打赏
  • 举报
回复
引用 6 楼 pk320925pk 的回复:
var array = jQuery('#dataTable').datagrid('getSelections'); if (array.length <= 1) { jQuery.messager.alert("警告", "请选择您要合并的单据!", "warning"); return; } var isflag = true; for ( ……
谢谢,原来真的是break的原因啊
2013-05-31 2013-03-03
  • 打赏
  • 举报
回复
var array = jQuery('#dataTable').datagrid('getSelections'); if (array.length <= 1) { jQuery.messager.alert("警告", "请选择您要合并的单据!", "warning"); return; } var isflag = true; for ( var i = 0; i < array.length; i++) { for ( var j = i + 1; j < array.length; j++) { if (array[i].orig == array[j].orig && array[i].dest == array[j].dest && array[i].opStatus == array[j].opStatus && array[i].informId == array[j].informId && array[i].billtype == array[j].billtype) { isflag = false; }else{ isflag = true; } } if(isflag==true){ break; } } if (isflag == true) { jQuery.messager.alert("警告", "<br>选择合并的多张单据必须符合以下条件才能进行合并: <br>1.单据状态相同; <br>2.单据类型相同; <br>3.外协通知单号相同; <br>4.收货方与发货方相同。","warning") }else { alert("条件符合,可以合并"); }
2013-05-31 2013-03-03
  • 打赏
  • 举报
回复
不要break
sweetyane 2013-03-03
  • 打赏
  • 举报
回复
引用 3 楼 zhyli_c 的回复:
var isflag = true; for ( var i = 0; i < array.length; i++) { for ( var j = i + 1; j < array.length; j++) { if (array[i].orig == array[j].orig && array[i].dest == array[j].dest &&……
那该怎么写?
李志遠 2013-03-02
  • 打赏
  • 举报
回复
var isflag = true; for ( var i = 0; i < array.length; i++) { for ( var j = i + 1; j < array.length; j++) { if (array[i].orig == array[j].orig && array[i].dest == array[j].dest && array[i].opStatus == array[j].opStatus && array[i].informId == array[j].informId && array[i].billtype == array[j].billtype) { isflag = false; break; } } 前2张相同,isflag就为false了,当然判断不出
李志遠 2013-03-02
  • 打赏
  • 举报
回复
如果是判断所有的单据状态相同,那应该只要比较第一个单据与其他单据是否相同,按楼主的写法,比较的过程的是,第一个与第二个是否相同,第二个与第三个是否相同。。。
sweetyane 2013-03-02
  • 打赏
  • 举报
回复
速度,急

81,092

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧