JQuery在变量中搜索部分值

时间:2015-02-04 18:11:20

标签: javascript jquery

我正在构建一个使用本地存储来存储数据的系统。目前,系统的3个部分使用本地存储,每个系统以不同方式存储数据。

  • 一部分(A部分)使用数值作为密钥存储数据(例如0,1,2)
  • 一部分(B部分)使用值cor作为密钥
  • 来存储一些数据
  • 一部分(C部分)使用字符串和数值的混合存储数据(例如事件-1,事件-2,事件-3)

系统的一个特性是,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
        }
    }

}

2 个答案:

答案 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;
}