Ищите Javascript Array для Regex и возвращайте True / False (0/1), если найдены - PullRequest
2 голосов
/ 14 декабря 2008

Мне нужно знать, как я могу найти в массиве какой-нибудь буквенный текст и использовать его в качестве условия, продолжать ли.

И вот почему: Каждый раз, когда я выполняю функцию, я помещаю идентификатор свойства, на которое она действует, в массив. Мне нужно, чтобы моя функция проверяла, есть ли этот идентификатор в массиве, и если он есть, удалите его и выполните другую функцию (противоположную).

Вот пример массива:

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 может искать, но я не могу заставить ее оценить значение true или false, если она что-то найдет.

Вот мое идеальное использование поисковой оценки.

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

Ответы [ 3 ]

3 голосов
/ 14 декабря 2008

Grep не является стандартным методом массива javascript. Вы используете библиотеку JavaScript, которая добавила этот метод в массив? Если это так, вы можете посмотреть на его реализацию. Так как вы помещаете массивы в массив, он должен иметь возможность искать элементы каждого элемента массива вместо идентификатора в самом массиве. Функция, которая делает то, что вы хотите, будет:

 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;
 }
3 голосов
/ 14 декабря 2008

Похоже, вы хотите использовать вместо этого 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);
    }
}
1 голос
/ 14 декабря 2008
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\!");
        }
    }
}

Это итеративный цикл, который будет искать первый объект в каждом элементе массива, но он не будет искать вложенные элементы, такие как в моем демонстрационном массиве

...