2016-12-04 1 views
0

Я хочу сохранить URLs в localStorage, когда я просматриваю некоторые статьи. Пока что с кодом, который я написал, мне удалось это сделать, за исключением того, что когда я столкнулся с теми же статьями, которые я уже рассматривал, он снова сохраняет их URL-адрес, тем самым занимая пространство для хранения.Сохраните только новые данные на localStorage

Вот мой код:

var i = 0; 
$(window).on('scroll', function() { 
    if (!localStorage.getItem('names')) { 
    var data = []; 
    } else { 
    var data = JSON.parse(localStorage.getItem('names')); 
    } 
    var x = $("article"); 
    var url = x.eq(i).attr("data-entry-url"); 
    data.push(url); 

    if ($(window).scrollTop() >= x.eq(i).offset().top && url !== data) { 

    localStorage.setItem("names", JSON.stringify(data)); 
    console.log(data); 

    i++; 
    } 
}); 

Я поставил условие if url !== data там, чтобы проверить, если конкретная статья URL уже установлен в localStorage, чтобы остановить снова добавлять, но не работает. Как еще я должен проверить это?

+0

try data.indexOf (url) для определения URL-адреса в данных. [Array.indexOf] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf) – RamblinRose

+0

Пробовал теперь 'data.indexOf (url)'. Не работает ни .. – EddNewGate

ответ

0

url - это тип строки, а data - тип массива никогда не будет истинным при сравнении. Таким образом, вам нужно пройти через if(url == data[0]), если сравнить с одним URL-адресом ИЛИ, если вы проверите со всеми URL-адресами в массиве данных, следуйте за if(data.indexOf(url) >= 0). Попробуйте.

0

данные - массив, поэтому нам нужно использовать функцию javascript filter для цикла в массиве, а затем сравнить ее с URL-адресом. Пожалуйста, дайте мне знать, если вам нужно больше разъяснений кода образца

Смежные вопросы