首页 > 求下列代码的更好的写法,function中包含each方法,each中条件成立向外返回bool

求下列代码的更好的写法,function中包含each方法,each中条件成立向外返回bool

function checkWareHouse(){
    var deliveryWhid = $("#warehouseId").val(),
        flag = 0;
    if(deliveryWhid==""){
        $.prompt("请选择仓库!");
        return false;
    }
    $("tr.orderRow").each(function(i,o){
        var curOrderWhid = $(o).attr("orderwhid");
        if(deliveryWhid != curOrderWhid) {
            var curOrderSn = $(o).attr("ordersn"),
                orderIndex = $("#orderSns").val().indexOf(curOrderSn),
                textAreaObj = $("#orderSns").get(0);
            $.prompt("订单"+curOrderSn+"不属于该仓库!",{
                close:function(){
                    $("tr[ordersn="+curOrderSn+"]").remove();
                    CommonFunction.textSelect(textAreaObj,orderIndex,orderIndex+18);
                    $("#orderSns").focus();
                }
            });
            flag = 1;
            return false;
        }
    });
    if(flag == 1){
        return false;
    } else {
        return true;
    }
}

function checkWareHouse(){
    var deliveryWhid = $("#warehouseId").val(),
        checkWareHouseResult;
    var curOrderSn, orderIndex, textAreaObj, unMatchedOrderIndex, curOrderWhid;
    if(deliveryWhid==""){
        $.prompt("请选择仓库!");
        return false;
    }

    $("tr.orderRow").each(function(i,o){
        var curOrderWhid = $(o).attr("orderwhid");
        if(deliveryWhid != curOrderWhid) {
            checkWareHouseResult["unMatchedOrderIndex"]=i;
            checkWareHouseResult["unMatchedOrderWhid"]=curOrderWhid;
            return false;
        }
    });

    if(checkWareHouseResult){
        unMatchedOrderIndex = checkWareHouseResult["unMatchedOrderIndex"];
        curOrderWhid=checkWareHouseResult["unMatchedOrderWhid"];
        curOrderSn = $("tr.orderRow:eq("+ unMatchedOrderIndex +")").attr("orders");
        orderIndex = $("#orderSns").val().indexOf(curOrderSn);
        textAreaObj = $("#orderSns").get(0);
        $.prompt("订单"+curOrderSn+"不属于该仓库!",{
                close:function(){
                    $("tr[ordersn="+curOrderSn+"]").remove();
                    CommonFunction.textSelect(textAreaObj,orderIndex,orderIndex+18);
                    $("#orderSns").focus();
                }
        });
    }

            
    return checkWareHouseResult;
}

function checkWareHouse() {
    var deliveryWhid = $("#warehouseId").val();
    if( deliveryWhid === '' ) return $.prompt('请选择仓库');
    
    var orderWhild, 
        result = [].some.call($("tr.orderRow"), function(o) {
            orderWhild = $(o);
            return orderWhild.attr('orderwhild') === deliveryWhid;
        });
    if( !orderWhild ) return true;
    
    var curOrderSn = orderWhild.attr('ordersn'),
        orderIndex = $('#orderSns').val().indexOf(curOrderSn),
    return $.prompt('订单'+curOrderSn+'不属于该仓库', {
        close: function() {
            $('tr[ordersn='+curOrderSn+']').remove();
            CommonFunction.textSelect( $('#orderSns').get(0), orderIndex, orderIndex + 18 );
            $('#orderSns').focus();
        }
    });
}

没看懂问题。。。


function checkWareHouse(){
    var deliveryWhid = $("#warehouseId").val();
    if (deliveryWhid === "") {
        $.prompt("请选择仓库!");
        return false;
    }
    return ![].some.call($("tr.orderRow"), function(i,o){
        var curOrderWhid = $(o).attr("orderwhid");
        if(deliveryWhid !== curOrderWhid) {
            var curOrderSn = $(o).attr("ordersn"),
                orderIndex = $("#orderSns").val().indexOf(curOrderSn),
                textAreaObj = $("#orderSns").get(0);
            $.prompt("订单"+curOrderSn+"不属于该仓库!",{
                close: function() {
                    $("tr[ordersn=" + curOrderSn + "]").remove();
                    CommonFunction.textSelect(textAreaObj, orderIndex, orderIndex + 18);
                    $("#orderSns").focus();
                }
            });
            return true;
        }
    });
}

使用every函数就能在得到false的时候立即返回了,some是立即返回true

return Array($("tr.orderRow")).every(function(o) {
  if(条件成立) {
    return false;
  } else {
    return true;
  }
});

MDN参考:Array.prototype.every

【热门文章】
【热门文章】