我正在构建一个使用本地存储来存储数据的系统。目前,系统的3个部分使用本地存储,每个系统以不同方式存储数据。
cor
作为密钥系统的一个特性是,A部分将在首次加载页面时检查本地存储中是否存在任何存储的数据。 B部分和C部分稍后使用。
但是,当页面首次加载时,它会崩溃,因为我无法弄清楚如何检查部分C的数据是否存在于本地存储中。我已经尝试过这种方法来检查C部分:
var eveCheck = val.indexOf('event-');
if(val != 'cor' || eveCheck != 0) {
//Only Part A does its magic here
}
但这似乎不起作用。我也试过这个:
if(val != 'cor' || val != 'event-*') {
//Only Part A does its magic here
}
但这也不起作用。我该怎么做才能检查C部分的数据?它总是在键的开头使用event-
,但数值总是不同。
修改
从for循环生成val
。这是代码中的早期版本:
var bookingList = simpleStorage.index();
if(bookingList === 0) {
} else {
$.each(bookingList, function(i, val){
if(val != 'cor' || val != 0) {
var bia = simpleStorage.get(val);
var eveCheck = val.indexOf('event-');
if(val != 'cor' || eveCheck != 0) {
//Only Part A does its magic here
}
}
}
答案 0 :(得分:1)
如果您只是检查val
是否与A部分模式匹配,而不是B部分或C部分模式,您可以检查它是否成功解析为整数:
var partAKey = 2;
var partBKey = 'cor';
var partCKey = 'event-5';
function IsKeyPartA (val) {
return !isNaN(parseInt(val, 10));
}
console.log('Testing part C key: ' + IsKeyPartA(partCKey));
console.log('Testing part B key: ' + IsKeyPartA(partBKey));
console.log('Testing part A key: ' + IsKeyPartA(partAKey));

如果您想为每个与'cor'
或'event-'
模式不匹配的值返回true,则可以执行以下操作,但请注意,这将匹配一切除了与这两个确切模式匹配的字符串外。
var partAKey = 2;
var partBKey = 'cor';
var partCKey = 'event-5';
function IsKeyPartA (val) {
//Return true for anything that doesn't match the part B or part C patterns
return val !== 'cor' && (typeof val !== 'string' || val.indexOf('event-') === -1);
}
console.log('Testing part C key: ' + IsKeyPartA(partCKey));
console.log('Testing part B key: ' + IsKeyPartA(partBKey));
console.log('Testing part A key: ' + IsKeyPartA(partAKey));

答案 1 :(得分:0)
我在这一方上迟到了(并且已经发布的答案非常出色),但是如果您只是想确定localStorage对象是否包含任何以"事件开头的键? ",您可以尝试像下面的代码一样简单。
所以你基本上这样称呼它:
if (localStorageContains('event-')){
console.log('You have event keys! Hooray!');
} else {
console.log('No keys yet - time to add some.');
}
显然,这有一些缺点 - 例如,它不会检查传递的参数是否为字符串 - 但是因为你知道你在寻找什么因为,它可能足以满足您的需求。
function localStorageContains(searchText){
var valueToReturn = false;
for (var i in localStorage){
if (i.indexOf(searchText) > -1){
valueToReturn = true;
}
}
return valueToReturn;
}