我已经对来自服务器的数据进行了排序。它是从无限卷轴调用的。
我想将不重复的数据推送到客户端阵列。如果重复开始,我想返回并结束无限滚动。
$scope.collections = [];
$scope.isBusy = false;
$scope.queryObject = {
size: 12,
sorter: 'timestamp',
sort: {
timestamp: -1
},
skip: 0
}
$scope.loadMore = function() {
if ($scope.isBusy == true) {
return;
}
$scope.isBusy = true;
Collect.all($scope.queryObject).then(function(res) {
for (var i = 0; i < res.data.length; i++) {
if ($scope.collections.length && res.data) {
for (var j = res.data.length - 1; j >= 0; j--) {
if ($scope.collections[0]._id == res.data[j]._id) {
console.log('match', res.data[j])
return;
}
}
$scope.collections.push(res.data[i])
}
else{
$scope.collections.push(res.data[i])
}
}
$scope.queryObject.skip += 12;
$scope.isBusy = false;
});
};
我在这里的尝试是以相反的顺序检查res.data对集合数组的第一个索引。如果有重复,则结束无限滚动/ loadMore()。
我一直得到res.data._id没有定义,但如果我删除它并只检查集合[0] vs res.data [j]它立即显示匹配,并且console.log显示res.data [ j]带有定义的._id。
我确信这里有一些非常基本的东西。
答案 0 :(得分:0)
for (var i = 0; i < res.data.length; i++) {
if ($scope.collections.length && res.data) {
for (var j = res.data.length; j >= 0; j--) { //modify this line to j = res.data.length - 1;
if ($scope.collections[0]._id == res.data[j]._id) {
console.log('match', res.data[j])
return;
}
}
$scope.collections.push(res.data[i])
}
else{
$scope.collections.push(res.data[i])
}
}
答案 1 :(得分:0)
你也可以这样做。
userDbHelper = new UserDbHelper(getApplicationContext());
sqLiteDatabase = userDbHelper.getReadableDatabase();
Cursor cursor = userDbHelper.searchDetails(name,productCode, sqLiteDatabase);