Сравните 2 файла JSON и удалите объект - PullRequest
0 голосов
/ 08 июня 2018

У меня есть 2 файла JSON: A , который находится на удаленном сервере, и B , который находится в локальном хранилище.

Я хотел бы, на страницезагрузите, чтобы jQuery сравнил оба файла и, если объект находится в файле B , но не в A , для удаления объекта из локального хранилища.

var fileA = '[{"ID":"1","foo":"bar"},{"ID":"3","foo":"bar"}]'; //Remote file
var fileB = '[{"ID":"2","foo":"bar"},{"ID":"3","foo":"bar"}]'; //localStorage

var jsonA = JSON.parse(fileA);
var jsonB = JSON.parse(fileB);
jsonA.forEach(function(allA) {
  jsonB.forEach(function(allB) {
    if (allA.ID != allB.ID) {
      var i = jsonB.findIndex(mydata => mydata.ID === allA.ID);
      if (i !== -1) {
        jsonB.splice(i, 1);
        if (jsonB.length === 0) {}
        localStorage.setItem('panier', JSON.stringify(jsonB));
      }
    }
  })
})

Я пытаюсь удалить ID:2 из локального хранилища, потому что его нет в A .

Ответы [ 2 ]

0 голосов
/ 08 июня 2018

Проверьте этот код ниже:

Советы: избегайте использования nested forEach loop для повышения эффективности.

var fileA = '[{"ID":"1","foo":"bar"},{"ID":"3","foo":"bar"}]';//Remote file
var fileB = '[{"ID":"2","foo":"bar"},{"ID":"3","foo":"bar"}]'; //localStorage

var jsonA = JSON.parse(fileA);  
var jsonB = JSON.parse(fileB);  

// Temporary array to hold all id in file a
var arrA = [];
//Push all id in file A to arrA
jsonA.forEach(a => {
    arrA.push(a.ID);
});

jsonB.forEach((b,index) => {
    // check if arrA has b.ID
    if (arrA.indexOf(b.ID) == -1){
        jsonB.splice(index,1)
    }
})
console.log(jsonB)

localStorage.setItem('panier', JSON.stringify(jsonB));
0 голосов
/ 08 июня 2018

Попробуйте следующее:

var fileA = '[{"ID":"1","foo":"bar"},{"ID":"3","foo":"bar"}]';//Remote file
var fileB = '[{"ID":"2","foo":"bar"},{"ID":"3","foo":"bar"}]'; //localStorage

var jsonA = JSON.parse(fileA);  
var jsonB = JSON.parse(fileB);

jsonB = jsonB.filter((o) => jsonA.findIndex((obj)=> obj.ID === o.ID)!=-1 );
console.log(jsonB);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...