Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从以前的json获取当前json中添加的元素_Javascript_Arrays_Json - Fatal编程技术网

Javascript 从以前的json获取当前json中添加的元素

Javascript 从以前的json获取当前json中添加的元素,javascript,arrays,json,Javascript,Arrays,Json,我有一个存储为json文件的javascript数组,如下所示: old_data = [{ "image": "images/set_1_UTC+03.jpg", "weight": 101 }, { "image": "images/set_1_UTC+03.jpg", "weight": 102 }, { "image": "images/set_1_UTC+03.jpg", "weight": 103 }] 我将其加载到javascript中,另一个脚本向该json文件添加

我有一个存储为json文件的javascript数组,如下所示:

old_data = [{
  "image": "images/set_1_UTC+03.jpg", "weight": 101
}, {
  "image": "images/set_1_UTC+03.jpg", "weight": 102
}, {
  "image": "images/set_1_UTC+03.jpg", "weight": 103
}]
我将其加载到javascript中,另一个脚本向该json文件添加新的项,例如,它又添加了一个项,因此列表变为

new_data = [{
  "image": "images/set_1_UTC+03.jpg", "weight": 101
}, {
  "image": "images/set_1_UTC+03.jpg", "weight": 102
}, {
  "image": "images/set_1_UTC+03.jpg", "weight": 103
}, {
  "image": "images/set_1_UTC+03.jpg", "weight": 104
}]
我想要得到的是添加的新项目,并通过它们进行迭代,以便动态地向html添加更多元素

我的想法是每5秒检查一次或类似的内容:

<script>
  var previous = null;
  var current = null;
  setInterval(function() {
      $.getJSON("data.json", function(json) {
          current = JSON.stringify(json);
          if (previous && current && previous !== current) {
              // do stuff              }
          previous = current;
      });
  }, 5000);
</script>

var-previous=null;
无功电流=零;
setInterval(函数(){
$.getJSON(“data.json”),函数(json){
current=JSON.stringify(JSON);
如果(上一个和当前的和上一个!==当前的){
//做事}
先前=当前;
});
}, 5000);
当存在差异时,请执行以下操作:

var offset = new_data.length - old_data.length;

for(; offset <= new_data.length; offset++) {
    console.log(new_data[offset]);
var offset=new_data.length-old_data.length;

对于(;offset您可以通过比较和使用
Array.from

旧数据=[{
“图像”:“图像/设置”\u UTC+03.jpg,“重量”:101
}, {
“图像”:“图像/设置”\u 1\u UTC+03.jpg,“重量”:102
}, {
“图像”:“图像/设置”\u UTC+03.jpg,“重量”:103
}]
新数据=[{
“图像”:“图像/设置”\u UTC+03.jpg,“重量”:101
}, {
“图像”:“图像/设置”\u 1\u UTC+03.jpg,“重量”:102
}, {
“图像”:“图像/设置”\u UTC+03.jpg,“重量”:103
}, {
“图像”:“图像/设置”\u 1\u UTC+03.jpg,“重量”:104
}]
var arr1=数组.from(旧数据);
var arr2=数组.from(新的_数据);
var blnDiff=假;
var-arrDiff=[];
var max=arr1.1长度;
var maxArr=arr1;
var最小值=arr2.2长度;
如果(arr1.lengtharr1.length){
最大=2.5米长;
最小=1.5米长;
maxArr=arr2;
}
如果(blnDiff){
对于(变量i=0;iconsole.log(arrDiff)
您可以加载json文件以获得更新的json文件,如下所示:

setInterval(function() {
    var date = new Date();
    var timestamp = date.getTime();
    $.getJSON("data.json?time="+timestamp, function(data) {
        console.log(data);
    });
}, 5000);

您只需将最后一个数组的长度存储在一个变量中,每次从API获取数据时,只需将上一个长度显示为当前长度,还可以更新长度变量

像这样的

让旧数据=[{
“image”:“images/set_1_UTC+03.jpg”,
“重量”:101
}, {
“image”:“images/set_1_UTC+03.jpg”,
“重量”:102
}, {
“image”:“images/set_1_UTC+03.jpg”,
“重量”:103
}],
新数据=[{
“image”:“images/set_1_UTC+03.jpg”,
“重量”:101
}, {
“image”:“images/set_1_UTC+03.jpg”,
“重量”:102
}, {
“image”:“images/set_1_UTC+03.jpg”,
“重量”:103
}, {
“image”:“images/set_1_UTC+03.jpg”,
“重量”:104
}, {
“image”:“images/set_1_UTC+03.jpg”,
“重量”:105
}, {
“image”:“images/set_1_UTC+03.jpg”,
“重量”:106
}, {
“image”:“images/set_1_UTC+03.jpg”,
“重量”:107
}, {
“image”:“images/set_1_UTC+03.jpg”,
“重量”:108
}, {
“image”:“images/set_1_UTC+03.jpg”,
“重量”:109
}];
设lengthOfArray=old_data.length,
htmlText=`;
setInterval(函数(){
旧数据=新数据;
更新库(lengthOfArray);
lengthOfArray=旧数据长度;
}, 5000);
旧数据。forEach(函数(itm){
htmlText+=`图像名称:${itm.Image}和权重:${itm.weight}`;
});
$(“#append”).html(htmlText);
函数更新库(startIndex){
for(设i=startIndex;i


更加优雅的使用方式项目的顺序不会改变?@Saeed.Ataee,不,它们不会改变。基本上,我会将新项目附加到原始json中。