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好房豆的奖励..以此类推,回答好的 追加分!!
展开
 我来答
bangbangle
2013-11-21 · TA获得超过267个赞
知道小有建树答主
回答量:447
采纳率:0%
帮助的人:91.9万
展开全部
$(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

此用户被关机
2013-11-21 · TA获得超过317个赞
知道小有建树答主
回答量:220
采纳率:0%
帮助的人:238万
展开全部
在后台把天数按从小到大排序
然后把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;

}
}

大概是这样,有问题你自己调吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
qq1111qq111111
推荐于2016-05-23 · TA获得超过1175个赞
知道小有建树答主
回答量:1166
采纳率:66%
帮助的人:615万
展开全部
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;"?满足条件就跳出循环了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式