2

配列でリテラル テキストを検索し、それを続行するかどうかの条件として使用する方法を知る必要があります。

理由は次のとおりです。関数を実行するたびに、関数が作用するプロパティの 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 関数が検索できることは知っていますが、何かが見つかった場合に true または false を評価することはできません。

検索評価の私の理想的な使用法は次のとおりです。

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

3 に答える 3

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);
    }
}
于 2008-12-14T09:41:31.060 に答える
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;
 }
于 2008-12-14T07:37:06.600 に答える
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\!");
        }
    }
}

各配列要素の最初のオブジェクトを検索する反復ループですが、デモ配列のようにネストされた要素は検索しません

于 2008-12-14T07:31:50.557 に答える