@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));

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

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

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

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

Похожие вопросы