考虑使用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]]);
}
}
请帮帮我。
您有两个问题。
startsWith()
返回布尔值,而不是字符串- 您正在检查值是否以
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>