Я хотел бы сохранить последние 10 просмотренных продуктов в cookie, и мне нужно сохранить только уникальные значения, я имею в виду, не сохранять один и тот же продукт два или более раз, поэтому я использую js-cookie library, и это мой кодjquery проверить, если значение в массиве
function getLastViewedProducts() {
var pathArray = window.location.pathname.split('/');
var secondLevelLocation = pathArray[1];
var thirdLevelLocation = pathArray[2];
if (secondLevelLocation == 'catalog' && typeof thirdLevelLocation != 'undefined' && $("article[id^='node']").length > 0) {
var currentUrl = window.location.href;
var currentTitle = $('.node-header h1').html();
var currentImgUrl = $('.field-items .field-item:first-child a img').attr('src');
var productsArray = [{ 'url' : currentUrl, 'title' : currentTitle, 'img' : currentImgUrl }];
if (typeof Cookies.get('lastViewedProductsList') == 'undefined') {
// no cookie
Cookies.set('lastViewedProductsList', productsArray, { expires: 7 });
} else {
// have cookie
var arr = Cookies.getJSON('lastViewedProductsList');
if (jQuery.inArray(productsArray, arr)) {
if(arr.length > 10) {
arr.shift();
}
}
arr.push(productsArray);
Cookies.set('lastViewedProductsList', arr, { expires: 7 });
}
}
}
getLastViewedProducts();
но мой чек if (jQuery.inArray(productsArray, arr))
здесь не работает и в массиве будет добавлен один и то же значение. Зачем?
Вы проверили, что содержит 'productsArray' и' arr'? Перед выполнением проверки выполните 'console.log (productsArray, arr)' и проверьте консоль javascript, чтобы увидеть, как выглядят данные. –