javascript 前端indexDB,根据游标遍历所有数据排序无效问题? 5C

目前手上有个后台聊天系统,需要制作。

我需要在indexDB中 拿出非重复 数据,作为聊天人的列表。

图片说明

类似这样。
但是我再csdn的博客中查找到关于数据排序的文章。
图片说明

function dbGetFriendList(){
        var request = window.indexedDB.open('hxim');
        request.onsuccess = function (event) {
            db = request.result;
            var transaction = db.transaction('msg','readwrite');
            var store = transaction.objectStore('msg');
            // var index = store.index('success');
            var requestaa = store.openCursor(IDBCursor.NEXT_NO_DUPLICATE);
            requestaa.onsuccess = (e) => {
                var cursor = e.target.result;
                if(cursor){
                    var person = cursor.value;
                    console.log(person);
                    cursor.continue();
                }
            };
        };
    }

但是输出的数据 并未实现 非重复数据。

图片说明

后来考虑会不会废弃于是找到indexDB 官方文档。

图片说明

但是发现这个方式也没有成功与上方一样。

1个回答

这个第一遍取到数据后,进行循环过滤一遍就可以了
如果重复条件是 时间+内容
var oldList='原始数据';
var newList=[];
var repeatList=[];
for(var a=0;a<oldList.length;a++){
var data=oldList[a];
if(repeatList.indexOf(a.time+a.sourceMsg)==-1){
repeatList.push(data.time+data.sourceMsg)
newList.push(data)
}
}
return newList

houtailei
前端路上的雷哥 回复weixin_40313261: 嗯 没问题就行
大约一年之前 回复
weixin_40313261
weixin_40313261 嗯嗯,谢谢你。这个方式,之前想过。这个循环只能在requestaa.onsuccess回调里边写,在return出来之后,会出现对象在数组外,以至于无法循环return里边的数组(不知道为什么对象会push到数组外)。不过现在已经解决,因为之前的API已经废弃。现在应该写成 var requestaa = index.openCursor(null,'nextunique');
大约一年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐