【问题标题】:Search Javascript Array for Regex and return True/False (0/1) if found在 Javascript 数组中搜索 Regex,如果找到则返回 True/False (0/1)
【发布时间】:2010-09-26 20:19:04
【问题描述】:

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

原因如下: 每次我执行一个函数时,我都会将它所作用的属性的 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);
    }
}

【问题讨论】:

    标签: javascript regex arrays search grep


    【解决方案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\!");
            }
        }
    }
    

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 我认为 typeof 会起作用,但如果 elem 是一个数组,显然 typeof(elem) 是未定义的。
      • 警报(typeof []); // 警报对象
      【解决方案3】:

      看起来您想改用哈希映射:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-02-17
        • 1970-01-01
        • 2019-12-07
        • 2015-06-29
        • 2012-09-30
        • 2012-01-05
        • 1970-01-01
        相关资源
        最近更新 更多