搜索Javascript Array for Regex并返回True / False(0/1)(如果找到)

时间:2008-12-14 07:11:06

标签: javascript regex arrays search grep

我需要知道如何在数组中搜索某些文字文本并将其用作是否继续的条件。

原因如下: 每次执行一个函数时,我都会将它所处理的属性的ID推送到一个数组中。我需要我的函数来检查该ID是否已经在数组中,如果是,则删除它并执行我的其他函数(相反)。

这是一个示例数组:

var myArray = new Array();
myArray.push([1.000,1.000,"test1"]);
myArray.push([2.000,2.000,"test2"]);
myArray.push([3.000,3.000,"test3"]);

我知道Grep函数可以搜索,但是如果它找到了什么,我就无法判断它是真还是假。

这是我对搜索评估的理想用法。

function searcher(id){
    if(myArray.grep(id);){
        oppositeFunction(id);
    }else{
        function(id);
    }
}

3 个答案:

答案 0 :(得分:3)

Grep不是标准的javascript数组方法。您使用的是将此方法添加到Array的javascript库吗?如果是这样,您可能需要查看其实现。由于您将数组推入数组,因此需要能够搜索数组的每个元素的元素,而不是数组本身的id。做你想做的事情的功能是:

 function superContains(aray,id)
 {
      var contains = false;
      for (var i=0, len = aray.length; !contains && i < len; ++i)
      {
           var elem = aray[i];
            if (elem.constructor && elem.constructor == Array)
            {
                 contains = superContains(elem,id);
            }
            else
            {
                 contains = elem == id;   //  or elem.match(id)
            }
      }
      return contains;
 }

答案 1 :(得分:3)

看起来你想要使用hash-mapp:

var myhash = {};

myhash["test1"] = [1.000,1.000];
myhash["test2"] = [2.000,2.000];
myhash["test3"] = [3.000,3.000];

function searcher(id){
  if (myhash[id]) {
        delete myhash[id];
        oppositeFunction(id);
    }else{
        normalFunction(id);
    }
}

答案 2 :(得分:1)

function arraytest(){
    var myArray = new Array();  
    myArray.push(["test1"]);  
    myArray.push(["test2"]);  
    myArray.push(["test3"]);  
    for(i=0;i<myArray.length;i++){
        if(myArray[i]=="test1"){
            successFunction("Celebration\!");
        }
    }
}

是一个迭代循环,它将搜索每个数组元素中的第一个对象,但它不会搜索嵌套元素,例如在我的演示数组中