Javascript AngularJS检查下载的json在工作副本之间是否存在差异
我下载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
$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))代码>