2

columnNamesのキーと値のペアを含むオブジェクトの配列があります。

特定のcolumnNameが存在するかどうかを確認すると、常に-1が返されます。

これがサンプルhttp://jsfiddle.net/trLkt/6/です、ヘルプは適用されます

4

2 に答える 2

3

配列で文字列値を検索していますが、その中にオブジェクトcolumnModelを格納しています()。各配列要素のプロパティと比較することを単独で決定することはできません。検索している値を各配列要素と比較するだけです。columnModel.push({'colName': $(this).text()});$.inArray()colName

于 2012-09-13T13:53:11.793 に答える
2

あなたができる2つのこと:

(@lanzzによって提案されているように)を使用stringsする代わりに配列に追加すると、期待どおりに機能します。objects.push$.inArray

または、配列内にオブジェクトを格納する必要がある場合(たとえば、各オブジェクト内に複数のプロパティが必要な場合)、各オブジェクトを反復処理して、colNameすでに存在するかどうかを確認する必要があります。

    var colExists = false;
    var text = $(this).text();
    $.each(columnModel, function(k, v) {
      if(text == v['colName']) {
        colExists = true;
      }
    });

次に、チェックをからif(colExists === -1)に変更しますif(!colExists)

$(function () {
  $('#ddlMain').change(function (event) {
    $('option:selected', $(this)).each(function () {

      var colExists = false;
      var text = $(this).text();

      $.each(columnModel, function(k, v) {
        if(text == v['colName']) {
          colExists = true;
        }
      });

      if(!colExists) {
        columnModel.push({'colName': $(this).text()});
        alert($(this).text() + ' added to columnModel');
      }

    });
  });
});
于 2012-09-13T14:18:28.523 に答える