jQuery从LocalStorage检索具有相同起始模式的多个键

考虑到我正在使用localStorage.setItem()存储5个数据:

{“ abc1”:“是”, “ abc2”:“是”, “ abc3”:“是”, “ uvw”:“否”, “ xyz”:“否”}

对于检索,我们可以使用localStorage.getItem()。但是在这里,我需要检索其键名以字符串“ abc”开头的所有键值对,即检索键"abc1""abc2""abc3"

这是我尝试过的:

var a = {},keys = Object.keys(localStorage),l = keys.length;
        
while (l--) { 
  a[keys[l]] = localStorage.getItem(keys[l]);
  if(a[keys[l]].startsWith('abc') == "true") {
    alert(a[keys[l]]);
  }
}

 

请帮助我。

iCMS 回答:jQuery从LocalStorage检索具有相同起始模式的多个键

您有两个问题。

  1. startsWith()返回一个布尔值,而不是字符串。
  2. 您正在检查是否以abc而不是键开头。
var a = {};
Object.entries(localStorage).forEach(([key,value]) => {
  if (key.startsWith("abc")) {
    a[key] = value;
  }
});
console.log(a);
,

我建议类似的东西

var a = {},keys = Object.keys(localStorage);

$.each(keys,function(i,k) {
  if (k.startsWith("abc")) {
    a[k] = localStorage[k];
  }
});

console.log(a);

测试示例

var local = {
  "abc1": "yes","abc2": "yes","abc3": "yes","uvw": "no","xyz": "no"
};
var a = {},keys = Object.keys(local);

$.each(keys,k) {
  if (k.startsWith("abc")) {
    a[k] = local[k];
  }
});

console.log(a);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

这将产生一个仅包含键值对的新对象。

备用

var local = {
  "abc1": "yes","xyz": "no"
};
var a = {};

$.each(local,function(k,v) {
  if (k.startsWith("abc")) {
    a[k] = v;
  }
});

console.log(a);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

本文链接:https://www.f2er.com/1662595.html

大家都在问