话不多说,先讲需求吧。
我们都会遇到这样一个场景:在天猫或者京东中,优惠券的使用,假设你的个人账户有好多优惠券,那么当消费满减的时候,会有一个最优的选择。
举个栗子:你消费50元,现在你有3张优惠券,分别是:满20减5块,满10块减10块,满30减5块。请写出使用优惠券的方案::1(满20减5块,满30减5块==一共减了10块),2(满20减5块,满10块减10块==一共减了15)3.(满20减5块,满10块减10块,满30减5块==减了20块)但是第三种选择:满20,满10块,满30块的总金额是60元,已经超过了50元,所以第三种 选择pass掉。现在剩下 1,2两种选择,这两个 里边有个最优选择:就是选择2.
好了,需求说清楚,剩下的就是代码了。
$.ajax({
type:"post",
url:basePath+"url",
dataType:"json",
async:false,
success:function(jsondata){
if(jsondata.code==1){
if(jsondata.obj.cashTicketList.length>0){
couponNum(jsondata);//ajax回调
}else{
//没有优惠券
$(".invest-top1px").fadeOut();
}
}
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
console.log(XMLHttpRequest.status)
}
});
function couponNum(jsondata){
arrList =jsondata.obj.cashTicketList;
if(arrList.length==""||arrList.length==null){
//优惠券不现实
$("#needcoupon").fadeOut();
}else{
createCouponList(arrList);//展示后台返回数据
}
}
var b=arrList.concat();
b.sort(sortByProperty);
getingo(b);
}
//自定义排序映射返回数据
function getingo(b){
for(var i=0;i<b.length;i++){
if(InvestmentAmount>=b[i].investMiniAmount){
for(var j=0;j<arrList.length;j++){
if(arrList[j]==b[i]){
//自动选择可选元素 $("#couponList").find("li").eq(j).find("span").find("input").removeClass("input_default").addClass("input_light").attr("data-maskNum","1");
}else{
}
}
}else{
//不能选择
}
}
}//自定义排序映射返回数据
//展示后台返回数据结束
//数组对象自定义排序
function sortByProperty (obj1, obj2){
var valage = obj1.amount;
var valmoney = obj1.investMiniAmount;
var valageT = obj2.amount;
var valmoneyT = obj2.investMiniAmount;
var valZ=valage/valmoney;//比值
var valO=valageT/valmoneyT
if (valZ < valO) {
return 1;
} else if (valZ > valO) {
return -1;
} else if(valZ==valO) {
if(valage<valageT){
return 1;
}else if(valage>valageT){
return -1;
}else if(valage==valageT){
var valTime= obj1.expireTime;
var valTimeT=obj2.expireTime;
valTime = new Date(valTime);
valTimeT = new Date(valTimeT);
if(valTime<valTimeT){
return -1;
}else if(valTime>valTimeT){
return 1;
}else{
return 0;
}
}else{
return 0;
}
}else{
return 0;
}
}
//自定义排序结束
好了,就这样了,以后再后续补充。