0

我有一个这样的对象数组:

 [
     {
         "time":  1,
         "value": 405.56
     },

     {
         "time":  2,
         "value": 407.64
     },

     {
         "time":  4,
         "value": 403.26
     },


     {
         "time":  5,
         "value": 403.26
     }
]

但是,有时没有对象(例如3,上面的示例中缺少对象)。

为了将此缺失数据的值设置为默认值,我找到了这个线程。但是,我想要做的是回填数据。例如,我想创建一个3对象,使其具有前一个对象的值 (407.64)。

是否有可用于进行这种操作的 Javascript 库?我不想尽可能自己编码。

编辑:可能会有更多缺失值,但标识符 ( time) 将始终为数字。

4

2 回答 2

0

工作小提琴

var test = [
     {
         "time":  1,
         "value": 405.56
     },

     {
         "time":  2,
         "value": 407.64
     },

     {
         "time":  7,
         "value": 403.26
     },


     {
         "time":  12,
         "value": 403.26
     }
]

function fill() {
    var tmp = [];
    for (var i = 0, len = test.length - 1; i < len; i++) {
        if (test[i]["time"] == test[i+1]["time"] - 1) {
            tmp.push(test[i]);
        } else {
            for (var j = test[i]["time"], l = test[i+1]["time"]; j < l; j++) {
                tmp.push(test[i]);
            };
        }
    };
    return tmp;
};

function printArray(arr) {
    for (var i = 0, len = arr.length; i < len; i++) {
        document.body.innerHTML += "<p>" + i  + ": " + JSON.stringify(arr[i]) + "</p>";
    }
};

printArray(fill(test));
于 2013-07-22T11:18:20.030 回答
0

如果你想使用 javascript 代码,那么试试这个 -

function fillArray(arr){
var i=1;
while(i<arr.length){
  if((arr[i]["time"]*1-arr[i-1]["time"]*1) > 1){
    arr.splice(i,0,{"time":i+1, "value": arr[i-1]["value"]});

        }
  i++;
}
//console.log(arr);
return arr;
}
于 2013-07-22T10:23:52.130 回答