3

私はjQuery/JSにかなり慣れていません。しかし、いくつかのチェックを行いたいjQueryにループがあります。URLがすでに印刷されているかどうかを確認したいと思います。それが重要な場合、ループのデータは JSON から取得されます。

基本的に、ループからのすべての URL を配置する配列 var = myArray があります。私はそれぞれでそのループを通過します。次に、URLがすでに配列にあるかどうかを確認するたびに。疑似として:

var myArray = [];
each data {
    myArray.push({'url':data.url});

    if data.url is already in myArray {
        do stuff
    }

    if data.url is not already in myArray {
        do other stuff
    }
}

jQuery.inArray() で aounrd をプレイしていましたが、常に -1 を取得しました

ご協力ありがとうございました!

4

4 に答える 4

1

これを試して:

var myArray = [];
$.each(data, function(i,u) {
   if($.inArray(u, myArray)){
        //DO STUFF IF URL IN ARRAY
   }else{
       myArray.push(u);
       //DO SUTFF IF URL NOT IN ARRAY
   }
});
于 2012-04-04T12:11:23.437 に答える
1

オブジェクトを作成する代わりに、URL を直接プッシュするだけです。

myArray.push(data.url);

その後jquery.inarray()、正常に動作するはずです

if (jquery.inArray(data.url, myArray))

ただし、ループの最初ではなく最後に新しい URL を追加する必要があります。そうしないと、チェックに行くときに常に配列に含まれます。

デモ: http://jsfiddle.net/c2934/

于 2012-04-04T12:07:04.253 に答える
1

疑似コードでは、配列が存在するかどうかを確認する前に配列にプッシュしていたため、常に存在していました。data.urlそれと、代わりにプッシュする必要があります{'url':data.url}

あなたが探しているものの実際の例:

var testData = [ 1, 2, 2, 3, 4]
var myArray = []    
jQuery.each( testData, function( pos, val ) {
    // not in array
    if ( jQuery.inArray( val, myArray ) == -1 ) {
        myArray.push( val );

    // in array  
    } else {
        alert( "Already in [" + myArray + "] : " + val );        
    }    
})​;​
于 2012-04-04T12:18:05.147 に答える
0

$.grep() を使用することもできます

var myArray = [];
var ar = [{'url':'test1'},{'url':'test1'},{'url':'test3'}];
$.each(ar,function(ii,data) {
  if ($.grep(myArray,function(e,i){ return e.url == data.url;   }).length > 0) {
    console.log('in array: ' + data.url);
  } else {
    console.log('not in array: ' + data.url);
  }
  myArray.push({'url': data.url });
});
于 2012-04-04T12:43:59.737 に答える