Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.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 AngularJS检查下载的json在工作副本之间是否存在差异_Javascript_Json_Angularjs - Fatal编程技术网

Javascript AngularJS检查下载的json在工作副本之间是否存在差异

Javascript AngularJS检查下载的json在工作副本之间是否存在差异,javascript,json,angularjs,Javascript,Json,Angularjs,我下载json以便: $scope.getarticles = function(company) { $http.get("url", { headers: { 'Content-Type': 'application/json', 'If-Modified-Since': '' } }) .success(function(response) { $.each(response, function(ind

我下载json以便:

$scope.getarticles = function(company) {
  $http.get("url", {
      headers: {
        'Content-Type': 'application/json',
        'If-Modified-Since': ''
      }
    })
    .success(function(response) {
      $.each(response, function(ind, el) {
        $scope.articles.push(el);
      });
    })
    .error(function(err, status) {
    });
};
我使用$scope.articles,对于一些对象,我可以更改数据(注意,它也可以有sort-uid等,不要比较它们)-如何将我的数据与从json获得的数据进行比较?像

     $.each($scope.articles, function(ind, el) {
        if (el == $scope.copyArticles)
          console.log("yes");
      });

这是真的吗?如果是的话,怎么办

没有简单的内置方法,特别是当您必须忽略某些字段时,如sort UID

它只是回到了基本的Javascript

例如,定义一个函数来比较两个项目是否相等,忽略您不关心的任何字段。为了方便起见,我正在使用
\uuU4.omit()
函数从或移除我不关心的键,并使用
angular.equals()
对结果对象进行深入比较

function articlesAreEqual(article1, article2) {
    return angular.equals(strippedArticle(article1), strippedArticle(article2));
}

function strippedArticle(a) {
    return _.omit(a, 'sortUID' /* add other keys here */);
}
然后,您可以查看是否有任何下载的与现有的匹配:

$scope.getarticles = function(company) {
  $http.get("url", {
      headers: {
        'Content-Type': 'application/json',
        'If-Modified-Since': ''
      }
    })
    .success(function(response) {
      $.each(response, function(ind, el) {
        if (articlesAreEqual($scope.articles[ind], el)) {
            console.log('Article #' + (ind + 1) + ' is the same.');
        } else {
            console.log('Article #' + (ind + 1) + ' differs.');
            $scope.articles.splice(ind, 1, el); // replace the existing one
        }
      });
    })
    .error(function(err, status) {
    });
};
stringify($scope.articles.slice().sort(sortArticles))==strinfigy(response.sort(sortArticles))