Ищите Javascript Array для Regex и возвращайте True / False (0/1), если найден

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

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

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

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);
    }
}
14.12.2008 07:11:06
3 ОТВЕТА
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\!");
        }
    }
}

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

1
14.12.2008 07:31:50

Grep не является стандартным методом Array 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.12.2008 07:57:26
Я думал, что typeof будет работать, но, очевидно, typeof (elem) не определен, если elem является массивом.
tvanfosson 14.12.2008 07:58:10
оповещение (typeof []); // объект оповещения
some 15.12.2008 06:45:50

Похоже, вы хотите использовать вместо этого 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);
    }
}
3
15.12.2008 03:55:00