2016-10-25 7 views
0

私はこのコードをHTML構造をループし、そのデータ属性に基づいて配列を作成します。私はforeachループの中で条件文を実行したいのですが、count変数が配列内にあるかどうかを確認したいのですが。私は​​を見ましたが、私はそれがassociative arraysと一緒に動作するかどうかはわかりませんか?ここで変数がjQueryの連想配列内にあるかどうかを確認します

はHTML

<div class="dfp" data-adposition="<?php echo $dfpPos; ?>" data-dfpcode='<?php echo $dfpCode; ?>'> 
</div> 

<div class="dfp" data-adposition="<?php echo $dfpHalfPos; ?>" data-dfpcode='<?php echo $dfpHalfCode; ?>'> 
</div> 

ここで配列を作成しますJSがあります。

var dfpObj = { "adverts" : [] }; 

$(".dfp").each(function(){ // PROCESS DFPS 
    var code = $(this).data("dfpcode"); 
    var position = $(this).data("adposition"); 
    var dfp = { 
     "code": code, 
     "position": position 
    } 
    dfpObj.adverts.push(dfp); 
}); 

私のIFステートメント。

if($.inArray(count, dfpObj.adverts) !== -1) { 
    var dfp = $('.dfp[data-adposition=' + count + ']'); 
    var dfpcode = $(dfp).data("dfpcode"); 
    var dfppos = $(dfp).data("adposition"); 
    myfunction(dfpcode, dfppos); 
} 
// count is within a foreach loop so at the end of the loop is $count++ 
+0

1. JavaScriptには「連想配列」はありません。数字で索引付けされた配列と、文字列をキーとするオブジェクトがあります。 2.「連想配列」(a.k.a.オブジェクト)を使用していなくても、 'dfpObj'という名前のオブジェクトがあります。このオブジェクトは' adverts'プロパティとしてプレーンな配列を持ち、 '$ .inArray'を実行します。 3.それでも、何が「数え」であるのかは分かりませんが、配列内の何かになるようには見えません.-「広告」はオブジェクトの配列なので、オブジェクトの配列です。同じ値を持っているのではなく、同じものを指している場合は同じです。 – vlaz

+0

実際には 'カウント 'とそれをどのように使っているのか、私はそれが何であるかさらに混乱しています。それは本当に単なる数字ですか?その場合、オブジェクトの配列内には絶対に含まれないためです。そして、それはどこから来ていますか?配列にそれが含まれているかどうかチェックするのはなぜですか?その番号の_index_が存在するかどうかを確認するだけでしたか? – vlaz

+0

私がやっていることは、ニュース記事を網羅して印刷することです。しかし、私たちのクライアントは、広告を表示するグリッド内のどの位置に設定することができます。したがって、countは参照として使用され、ifは 'if(countは配列dfpObjにあります)広告を出力します。 ' – WebDevDanno

答えて

0

以下を使用できます。

$.grep(dfpObj.adverts, function(obj) { return obj.code == "122"; }) 

これはあなたにそのオブジェクトを与えるか、空の配列を与えます。

関連する問題