JavaScript:将当前值与从Json绘制的先前值进行比较

时间:2015-12-04 18:19:40

标签: javascript json

我不确定如何写问题标题或者问这个问题的正确方法是什么。

目标是,我目前正在从外部Json文件中提取数据,该文件包含大约700个或更多数据。我想要做的是,当循环遍历这些数据时,例如,数据1,数据2,数据3 ......等等,我希望将当前值与之前的值进行比较,如果它更大,则更小,或等于,然后做点什么

现在,我的代码就是这样编写的

function myJson() {

    $.getJSON('JsonData.json', function (response) {

        setInterval(function () {
            var TrialCount = response.length;
            updateTrack(X_Data);

            var counter = 0;
            var Info = response[counter];
            var X_Data = Info.X_Json;

            X_Data = X_Data.toFixed(2); // rounds to 2 decimal places

            document.getElementById("DisplayX").innerHTML = X_Data

            counter++;
        }, 500);
    });
};

function updateTrack(X_Data) {
    $('#X').html(X_Data);
        if (current X_Data < previous value){
            document.getElementById("X_Data_img").src = "first image";
        }
        else if (current X_Data > previous value) {
            document.getElementById("X_Data_img").src = "second image";
        }
        else {
            document.getElementById("X_Data_img").src = "third image";
        }
    };  

如何将当前X_Data(当前的Json数据循环)与之前的X_data(Json数据的前一个循环)进行比较? |

我拥有的Json数据的格式

var X_Json= {
  "data1" : "#",
  "data2" : "#",
  "data3" : "#",
   ..
},
{
  "data1" : "#",
  "data2" : "#",
  "data3" : "#",
   ..
},
{
  "data1" : "#",
  "data2" : "#",
  "data3" : "#",
   ..
},
{
  "data1" : "#",
  "data2" : "#",
  "data3" : "#",
   ..
}

3 个答案:

答案 0 :(得分:0)

Parse.Cloud.useMasterKey()设置在var previous_value范围之外,并使用当前updateTrack()值将其设置在updateTrack()的末尾。

X_Data

循环只是为了向您展示它是如何工作的,将循环的每次迭代想象为对var X_Data = [14,22,53,24,6,6,97]; var previous_value = null; for (var i = 0; i < X_Data.length; i++) { var current_value = X_Data[i]; if (i > 0) { // some sort of first item check if (current_value < previous_value) { // set first image } else if (current_value > previous_value) { // set second image } else { // set third image } } previous_value = current_value; } 的单独函数调用。

这是处理阵列内比较的一般模式,希望能帮助您找到答案。

为了帮助您确定代码的正确方向,您要执行的操作是在功能外设置updateTrack()并将counterresponse[counter].X_Json进行比较并设置图像并跳过如果response[counter - 1].X_Json为0,则设置counter的方式每次调用该函数时都会重置它。

答案 1 :(得分:0)

我假设你的JSON看起来像这样。

var myJson = {
  "data1" : "2",
  "data2" : "5",
  "data3" : "43",
   ..
}

如果要循环遍历对象的所有属性,就好像它是一个数组一样,那么将所有属性名称作为字符串放在数组中。

var myProperties = Object.keys(myJson);

这将创建一个像这样的属性名称数组

["data1", "data2", "data3"....]

您可以遍历myProperties并使用项目名称来标识myJson对象中的属性。

for(var i = 1; i < myProperties.length ; i++) {
   if(myJson[myProperties[i]] < myJson[myProperties[i-1]]) {
       //Do something
   } else if(myJson[myProperties[i]] > myJson[myProperties[i-1]]){
      //Do another thing
   } else {
      //Do something else
   }
}

答案 2 :(得分:-1)

也许我是误会,但只是试图循环你的json数据并将当前的数据与之前的数据进行比较?

 $.getJSON('myurl', function (data) {

                $.each(data, function (i, item) {
                   if (i > 0 && item.myval < data[i - 1].myval){
                     // do whatever
                    }
                 });              
            });