js遍历json数据和判断,求大神解答,挺困惑的
连续签到天数['15','30','60','90','120']连续签到天数奖励好房豆['100','200','300','400','500']我ajax得到这两个...
连续签到天数['15','30','60','90','120'] 连续签到天数奖励好房豆 ['100','200','300','400','500']
我ajax得到这两个json数据,我要得到的结果是 我当前连续签到5天,那么我就要得到 连续签到5天,还差10天奖励100好房豆的奖励..以此类推,回答好的 追加分!! 展开
我ajax得到这两个json数据,我要得到的结果是 我当前连续签到5天,那么我就要得到 连续签到5天,还差10天奖励100好房豆的奖励..以此类推,回答好的 追加分!! 展开
3个回答
展开全部
$(function () {
//调用示例
Fun(5);
});
//连续签到天数['15','30','60','90','120']
//连续签到天数奖励好房豆 ['100','200','300','400','500']
//我ajax得到这两个json数据,我要得到的结果是
//我当前连续签到5天,
//那么我就要得到 连续签到5天,还差10天奖励100好房豆的奖励
function Fun(d){
var day_flag = 0; //距离奖励最近的一个天数
var index_flag = -1; //数据下标
var peas_flag = 0; //数据下标对应的好房豆的奖励数
var days = "['15','30','60','90','120']";
days = eval("(" + days + ")"); //由于days此时还只是字符串,所以先要转成json
var peas = "['100','200','300','400','500']";
peas = eval("(" + peas + ")");
var each_flag = true; //是不是第一次判断
$.each(days, function (idx, item) {
if (d < item) {
if (each_flag) {
day_flag = item - d;
index_flag = idx;
each_flag = false;
} else {
if ((item - d) < day_flag) {
day_flag = item - d;
index_flag = idx;
}
}
}
});
$.each(peas, function (idx, item) {
if (idx == index_flag) {
peas_flag = item;
}
});
if (index_flag >= 0) {
alert("连续签到" + d + "天,还差" + day_flag + "天奖励" + peas_flag + "好房豆的奖励");
}
}
此方法需要jquery
展开全部
在后台把天数按从小到大排序
然后把ajax返回的json转换成数组
dayArr;天数 数组(你自己获取的)
douArr;豆豆数组(你自己获取的)
conDay; 连续天数 (你自己获取的)
==============
var dou=0; 豆豆
var apprDay=-1; 差的天数
approaching(douArr,conDay);
正好在给出的连续天数里
if(apprDay==0){
alert("获得的豆豆"+dou);
}else{
if(apprDay>0){
alert("还差"+apprDay+"天,你就能获得豆豆"+dou);
}else{
alert(“系统错误!”);
}
}
//判断连续天数最接近且小于或等于
function approaching(a, obj) {
for (var i = 0; i < a.length; i++) {
if(a[i] -obj<0){
continue;
}
dou=douArr[i];
apprDay= fa[i] -obj;
if(apprDay>=0){
return;
}
}
大概是这样,有问题你自己调吧
然后把ajax返回的json转换成数组
dayArr;天数 数组(你自己获取的)
douArr;豆豆数组(你自己获取的)
conDay; 连续天数 (你自己获取的)
==============
var dou=0; 豆豆
var apprDay=-1; 差的天数
approaching(douArr,conDay);
正好在给出的连续天数里
if(apprDay==0){
alert("获得的豆豆"+dou);
}else{
if(apprDay>0){
alert("还差"+apprDay+"天,你就能获得豆豆"+dou);
}else{
alert(“系统错误!”);
}
}
//判断连续天数最接近且小于或等于
function approaching(a, obj) {
for (var i = 0; i < a.length; i++) {
if(a[i] -obj<0){
continue;
}
dou=douArr[i];
apprDay= fa[i] -obj;
if(apprDay>=0){
return;
}
}
大概是这样,有问题你自己调吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
var aa = ['15','30'];
var bb = ['100','200'];
var aArr = eval(aa);//转换成对象
var bArr = eval(bb);
var ss = 5;//签到天数
for(var i = 0; i < aArr.length; i++){
if(ss < aArr[i]){
alert('签到'+ss+'天,还差'+(aArr[i]-ss)+'天可奖励'+bArr[i]+'豆');
//console.log(ss,aArr[i]-ss,bArr[i]);
break;
}
}
更多追问追答
追问
你这样的话是跟所有的下标都来判断 都要输出
我要的只是当前跟连续签到天数最近的 比如我连续签到5天,还差10天就可以获得100奖励,
我在页面上要显示这一句话,不是显示很多
追答
你试过么,我只会显示一句。你没注意到"break;"?满足条件就跳出循环了
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询