我正在使用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();
}
}
}
这是一个很大的混乱,我完全迷茫了自己。任何人都可以帮我搞清楚吗?
如果需要,我完全不反对重新格式化数据结构。目前密钥为fav0
,fav1
等等。
那里使用的updateFavouritesList()
函数只是遍历localStorage数据库,并从中创建<li>
个项目以添加到列表中。
答案 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;
}