如何在当前迭代中获得下一次迭代的值

时间:2016-03-30 17:07:09

标签: javascript jquery json algorithm

我处于一种情况,我无法获得准备此算法的逻辑。

我有一系列图像在每个图像之间交替出现箭头。就像这样:Image - > Image - > Image - > Image

这些箭头也是箭头的图像,其总和值超过它们。     现在我必须在前一个箭头中显示图像的值(当然第一个图像没有前一个箭头所以我们必须处理下一个图像值(第三个位置的图像)以在前一个箭头上显示其值(第二个位置的箭头图像))

从这里我们将有图像路径和值(如果json不正确,我很抱歉,但请关注我想知道的内容)

  [{imagename1: "image1.png@", image1Value1:"imValue1@"},{imagename2: "arrowimage2.png@", image1Value2:"arrValue2@"},{imagename3: "image3.png@", image1Value3:"imValue3@"},{imagename4: "arrowimage4.png@", image1Value4:"arrValue4@"},{imagename5: "image5.png@", image1Value5:"imValue5@"}, {imagename6: "arrowimage6.png", image1Value6:"arrValue6@"},{imagename7: "image7.png@", image1Value7:"imValue7@"}, {imagename8: "arrowimage8.png@", image1Value8:"arrValue8@"}]

这就是我想要实现的目标:http://prntscr.com/am3337

请参阅此处json,其中我必须实现逻辑:

    $(json).each(function(i, val) //here i receive all images
     {
       var counter=1;

                $.each(val, function(key, val)  //this value is the value contained about arrow image
                {
                        var splitted = val.split('@'); 
                        var iamgename=splitted[0];//first parameter
                        var imageValue=splitted[1];//second paremeter

                        //how to get the next iteration value on current iteration (lets say if i am on second iteration , how can i get the third iteration image value here) 
                }
      }

我的问题是如何保存当前迭代的值以显示在前一个箭头图像上。 (显示部分我可以做我自己)。但问题是,比方说,我在循环$.each(val, function(key, val){}的第三次迭代。现在在第三次迭代中我有splitted[0]="image3.png"splitted[1]="imValue3",在arrowimage2.png上方显示imValue3有点困难(如何进行一次迭代以保存当前迭代值?)。或者其他解决方案可能是在第二次迭代时,尝试获取第三次迭代的值(我可以像这个值[i + 1]那样做,如果它是for循环,其中i = 2,我仍然可以获得i的值= 3增加一个增量,但我不知道如何在$.each(val, function(key, val){}循环中执行此操作)是否有任何人可以建议我过度使用此问题?

2 个答案:

答案 0 :(得分:1)

var json = [{imagename1: "image1.png", image1Value1:"imValue1"},{imagename2: "arrowimage2.png", image1Value2:"arrValue2"},{imagename3: "image3.png", image1Value3:"imValue3"},{imagename4: "arrowimage4.png", image1Value4:"arrValue4"},{imagename5: "image5.png", image1Value5:"imValue5"}, {imagename6: "arrowimage6.png", image1Value6:"arrValue6"},{imagename7: "image7.png", image1Value7:"imValue7"}, {imagename8: "arrowimage8.png", image1Value8:"arrValue8"}];

var counter = 1;
$(json).each(function(i, val) {
    var nextImageName   = json[counter]["imagename"+(counter+1)]; //your next image content is here.
    $.each(val, function(key, newVal) {
        var splitted        = newVal.split('@'); 
        var iamgename       = splitted[0];
        var imagecontent    = splitted[1];
    });
    counter++;
});

在这里,行var nextImageName = json[counter]["imagename"+(counter+1)];将返回您的下一个迭代图像路径。

答案 1 :(得分:0)

保存值的一种方法是将其分配给函数的外部作用域,以便在使用它时始终可以覆盖它var outerScope = 'some initializing' function blub{ process outerScope //maybe you want to check its initializing value on first Iteration outerScope = myNewValue }