0

私はこれを何時間も試みてきましたが、本当に簡単だと思いました。

JavaScriptを使用して、基本的に配列を反復処理し、インデックスの現在の値を取得してから、この値を配列から設定解除します。splice() はこれで機能するはずですが、配列を空にすることはできないようです。配列には常に 1 つの値が残っています。

var filtered = array("up", "down", "left");
 function resetTags(){
       var length = filtered.length;

       for(i=0; i <= length; i++){
            filtered.splice(i,1);
        }
    }

編集::

もう少し詳しく説明しようと思います:

私は基本的に、アイテムがクリックされたときに取得される、選択されたクラス値のリストを追跡しようとしています: varfiltered = array();

    jQuery("li a").click(function () {
     tag = jQuery(this).text();
     addFiltered(tag);
});

 function addFiltered(param){
      var inArray =  jQuery.inArray(param,filtered);
      if(inArray > -1){
        //param is in array, so we want to remove it from the filtered array 
            filtered.splice(index, 1);
        });

        }else{
         //param isn't in array, so we want to add it to the array 
            filtered.splice(0, 0, param);
        });
        }


    }
4

5 に答える 5

1

配列を空にする場合は、直接空の配列に設定します。

filtered = [];

配列を空にする前に値を使用したい場合は、その前に値を削除せずに反復し、完了したらクリアします。

複雑なソリューションをいじることによって、何を得るつもりですか?

于 2012-08-15T16:47:15.123 に答える
0

さて、あなたは増加しています。デクリメントは試しましたか?

var filtered = new Array("up", "down", "left");

function resetTags(){
   var length = filtered.length;

   for(i = length; i >= 0; i--){
        filtered.splice(i,1);
   }
}

これにより、最終的な要素が接合されていることが確認されます。

于 2012-08-15T16:47:19.923 に答える
0

私は基本的に、配列を反復処理し、インデックスの現在の値を取得してから、配列からこの値を設定解除したいと考えています。

for(i=0; i <= length; i++){
            filtered.splice(i,1);
        }

あなたがやろうとしていることを明確に定義している(またはおそらく知らない)とは思いません。

pop(n)次のようなメソッドを作成しようとしていますか?

var a = [1,2,3,4]
var result = pop(3, a)
result == [ 1, 2, 4]

それとも、配列をたどって毎回最初の要素を取得しようとしていますか? もしそうなら、あなたはそれを間違っています。それはただのシフト()です

 var filtered = ["up", "down", "left"]
 for(i = 0 ; i<= filtered.length; i++)
    {
       alert(filtered);
       filtered.shift();
       alert(filtered);          
    }
于 2012-08-15T17:05:27.260 に答える
0

配列が正しく定義されていません。それがコードが実行されなかった理由です

 var filtered = ["up", "down", "left"];
     function resetTags(){
           var length = filtered.length;

           for(i=0; i <= length; i++){
                filtered.splice(i,1);
            }
        }
于 2012-08-15T16:47:48.610 に答える
0

アイテムを 1 つずつ削除するには:

var a = [1,2,3,4,5];

while (a.length > 0) { a.splice(0,1); }

http://jsfiddle.net/89hkH/

于 2012-08-15T16:49:32.527 に答える