@sergey_from_saratov

Как оставлять в объекте последние 10 записей?

Хочу записывать в локалсторейдж объект в котором элементы вида уникальный ключ : значение. Чтобы повторений не было. Щас всё хорошо записывается без повторений. Но встал вопрос, как сделать чтобы в моем объектике оставалось только последние 10 добавленных эл-в? Я где то читал что через Set, но так и не понял куда его вставить.

$( "#toFavorites" ).click(function() {
	
  alert( "Товар добавлен в избранное" );
  
  /*ID товара*/
  var code = itemInfo.PROPERTIES.KODSITE.VALUE;
  
  /*Берём массив товаров из памяти*/
  var favoritesItems = JSON.parse(localStorage.getItem('favoritesItems'));
  
  
  /*Если пользователь заходит первый раз*/
  if(!favoritesItems){
	  console.log("favoritesItems пустой");
	  favoritesItems = {};
  }
  
  favoritesItems[code] = itemInfo;
  console.log(favoritesItems);
 
  /*Регулируем кол-во товаров в памяти (10 последних добавленных)*/

  
  /*Пишем результат в память*/
  localStorage.setItem('favoritesItems', JSON.stringify(favoritesItems));

});
  • Вопрос задан
  • 154 просмотра
Пригласить эксперта
Ответы на вопрос 3
  • Stalker_RED
    @Stalker_RED
    .
    Насколько я понял, у вас в favoritesItems лежат какие-то данные, и ключем выступает ID товара (code).
    В таком случае, что такое "последние 10 записей"? Как определить какие из них "последние", если нигде не записано время добавления из в список? Можно конечно взять 10 последних, при сортировке по ключу code, вас так устроит?

    favoritesItems = favoritesItems.slice(-10)
    Ответ написан
  • @Morph1nskij
    Насколько я правильно понял вопрос, вам нужно создать свою структуру данных на основе массива, размерностью 10 элементов(что-то типо очереди, при добавление нового элемента он становится последним, а первый удаляется и проверять элементы на уникальность) и использовать его.
    Ответ написан
  • alex_keysi
    @alex_keysi
    frontend developer
    чтобы не было повторов это есть объект set.
    чтобы поставить время добаление товара, записывай в сохраняемый товар время через new Date().
    и потом поставить фильтр при добавлении товара
    вот такой фильтр
    for (let i=0; i<10: ++i){

    }
    Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы