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]]);
}
}

请帮帮我。

您有两个问题。

  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, function(i, 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",
"abc2": "yes",
"abc3": "yes",
"uvw": "no",
"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>

最新更新