извлечение элементов локального хранилища со случайным числом, добавленным к ключу - PullRequest
0 голосов
/ 23 апреля 2019

В корзине я добавляю продукты в локальное хранилище, чтобы в случае неудачного платежа клиент мог нажать кнопку, которая затем заполняет корзину, чтобы он мог повторить попытку.

Я добавляю влокальное хранилище с этими кодами:

  $( ".terms-conditions" ).click(function() {
    localStorage.setItem('LinkURL' + ranNr, rdsLinkURL);
    localStorage.setItem('LinkTitle' + ranNr, rdsLinkTitle);
    localStorage.setItem('LinkOrderURL' + ranNr, rdsLinkOrderURL);
    localStorage.setItem('OrderAmount' + ranNr, rdsOrderAmount);
  });

Эти коды находятся внутри метода $('.rdsubs-cart-name').each, и это прекрасно сохраняется в LocalStorage, где каждый элемент красиво сгруппирован под собственным номером.Но теперь я хочу получить его, и этот поиск происходит на новой веб-странице, и поэтому я не могу использовать:

$( ".btn-repopulate-shopping-cart" ).click(function() {
  console.log(localStorage.getItem('LinkURL' + ranNr));
});

, поскольку ranNr не определено.Так что я подумал, не можем ли мы получить все ключевые значения , начиная с LinkURL.

Так что вышеизложенное является целью, и чтобы попасть туда, я уже попробовал пару вещей, но покабезуспешно.

console.log(localStorage.getItem([^='LinkURL'])); console.log(localStorage.getItem('LinkURL*')); console.log(localStorage.getItem([^'LinkURL*']));

Ответы [ 2 ]

1 голос
/ 23 апреля 2019

Я не знаю, как это сделать с помощью Jquery, но я постараюсь предоставить решение в javascript.Надеюсь, это вам поможет.

let allKeys = Object.keys(localStorage);
let filteredKeys = allKeys.filter(key => key.startsWith("LinkURL"));
let filteredValues = filteredKeys.map(filteredKey => 
localStorage.getItem(filteredKey))

Здесь allKeys будет массивом ключей, т.е. массивом строк.И FilterKeys - это массив ключей (начиная с LinkURL).FilterValues ​​- это массив всех значений, соответствующих массиву FilterKeys.

1 голос
/ 23 апреля 2019

Вы можете использовать Object.keys , Array.filter и String.startsWith , как следующие

localStorage.setItem('LinkURL1', "abc"); 
localStorage.setItem('LinkURL2', "def"); 

let result = Object.keys(localStorage).filter(v => v.startsWith("LinkURL"));
console.log(result); // ["LinkURL1", "LinkURL2"]

result.forEach(k => console.log(localStorage.getItem(k))); // paints abc and def
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...