HTML5 LocalStorage - 检查重复值

时间:2012-03-16 01:32:50

标签: javascript html5 local-storage ignore-duplicates

我正在使用LocalStorage将图像列表(从图库中)保存到设备。我在很大程度上解决了这个问题 - 将数据输入和输出,并填充HTML列表中的项目。容易。

我现在正在尝试检查要保存的项目,检查数据库中的所有值,如果不是重复项,则只添加它。当我正在构建这个时,我会越来越深入一个洞,而且我需要一些帮助。

这是我目前的职能:

function storeFavourite(currentImage) {
for (var i=0; i < localStorage.length; i++) {
    item = localStorage.getItem('fav'+i);
    if (item = currentImage) {
        console.log('fav'+i+', '+currentImage+' in db already');
    } else {
        next = localStorage.length;
        localStorage.setItem('fav'+next, currentImage);
        console.log('fav'+next+', '+currentImage);
        updateFavouritesList(); 
    }
}
}

这是一个很大的混乱,我完全迷茫了自己。任何人都可以帮我搞清楚吗?

如果需要,我完全不反对重新格式化数据结构。目前密钥为fav0fav1等等。

那里使用的updateFavouritesList()函数只是遍历localStorage数据库,并从中创建<li>个项目以添加到列表中。

1 个答案:

答案 0 :(得分:1)

你的行中有错误:

if (item = currentImage) {

您正在分配item。如果item不为null / empty / zero / falsy,则它将始终解析为true。也许它应该是:

if (item == currentImage) {

甚至:

if (item === currentImage) {

取决于currentImage的类型。

编辑:在任何情况下,这里都有一个能够完成您所需要的功能:

function storeFavourite(item) {
    for (var i in localStorage) {
        if (localStorage[i] === item) return;
    }
    localStorage["fav" + localStorage.length] = item;
}