HTML5 LocalStorage - проверка на наличие дублирующихся значений - PullRequest
1 голос
/ 16 марта 2012

Я сохраняю список изображений (из галереи) на устройстве с помощью 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> элементов для добавления в список.

1 Ответ

1 голос
/ 16 марта 2012

У вас есть ошибка в строке:

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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...