1

这是一个小例子:

var distinctValues = [];
distinctValues.push("Value1");
distinctValues.push("Value2");

var firstValue = distinctValues[0];

var searchResults = [];

var data = grid.jqGrid('getGridParam', 'data');
data.forEach(function (row) {

  searchResults[searchResults.length] =
  {
    "ID"       : row.ID,
    "CreatedBy": row.CreatedBy,
    "UpdatedBy": row.UpdatedBy
  }
}

如何在 searchResults 数组中查看 firstValue("Value1") 并检索 CreatedBy 信息?

//something like this - this is wrong syntax by the way
if ($.inArray(firstValue, searchResults) != -1) {
      alert(searchResults["CreatedBy"]);
}
4

1 回答 1

1

我想你可能想要这样做:

var searchResults = [];
data.forEach(function (row) {

  searchResults.push({ //Push to push the record to the array
    "ID"       : row.ID,
    "CreatedBy": row.CreatedBy,
    "UpdatedBy": row.UpdatedBy
  });
}

您可以使用 jquery $.inArray 或Array.prototype.indexOf

searchResults 是一个对象数组,因此请使用索引器 iesearchResults[index]["CreatedBy"]而不是 searchResults["CreatedBy"]

var idx = searchResults.indexOf(firstValue); //or var idx = $.inArray(firstValue, searchResults)
if (idx  > -1) {
      alert(searchResults[idx]["CreatedBy"]);  //item Found
}

您的$.inArray语法没有错,只要您的代码中包含 jquery。

由于您的匹配是针对对象属性的,因此您可以尝试以下操作:

   var result = $.grep(searchResults, function(value)
   {
       return value.ID === firstValue;
   });

  console.log(result[0].CreatedBy); //result will be an array of matches.
于 2013-06-13T05:18:14.810 回答