2

我有一个对象数组,其中包含 columnNames 的键值对。

当我检查特定的 columnName 是否存在时,它总是返回 -1

这是一个示例http://jsfiddle.net/trLkt/6/,将提供帮助

4

2 回答 2

3

您在数组中搜索字符串值,但在其中存储对象( )。无法自行决定与每个数组元素的属性进行比较,它只是将您正在搜索的值与每个数组元素进行比较。columnModelcolumnModel.push({'colName': $(this).text()});$.inArray()colName

于 2012-09-13T13:53:11.793 回答
2

你可以做两件事:

添加strings到数组而不是objects使用.push(如@lanzz 建议的那样),然后$.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 回答