嵌套对象的Jquery过滤器

时间:2011-12-09 14:11:59

标签: jquery

我的代码是:

 colModel: [

    { display: 'Grade', name: 'Grade', width: 40, align: 'center' },
    { display: 'Grade ID', name: 'ID', width: 180, align: 'left' },
    { display: 'Organization ID', name: 'Organization_ID', width: 120, align: 'left' },
    { display: 'Organization Name', name: 'Organization_Name', width: 130, align: 'left', hide: true }
    ]

将其作为对象传递给函数。

我想像

一样过滤它

//这有效

   alert(colModel[0].display);

   var obj = colModel.filter(function () {
               return $(this).name == "Grade"; });

  alert(obj.display);

但这未定义。

感谢任何帮助

编辑:

该对象作为选项传递给插件:

$('#filteredResult').FilteredPagedTable({ url: "http://localhost:2014/mySer.svc/GetFilteredPaged", grid: true, pageSize: 4, pageNo: 0, columnName: "ID", IsAscending: true, filteredColumn: $('#ddlColumns').val(), SearchedValue: $('#txtSearchTextBox').val() ,

    colModel: [

    { display: 'Grade', name: 'Grade', width: 40, align: 'center' },
    { display: 'Grade ID', name: 'ID', width: 180, align: 'left' },
    { display: 'Organization ID', name: 'Organization_ID', width: 120, align: 'left' },
    { display: 'Organization Name', name: 'Organization_Name', width: 130, align: 'left', hide: true }
    ]

 });

3 个答案:

答案 0 :(得分:1)

var matchedCols = {};
$.each(colModel, function(i) {
    if (this.name == "Grade") {
      matchedCols[i] = this;
    }
});

请参阅http://jsfiddle.net/acVbZ/

答案 1 :(得分:1)

我已经完成了这个......

你在哪里

alert(obj.display);

你应该使用

alert(obj[0].display);

filter返回匹配数组时 - 即使只找到一个结果。

在此处查看:http://jsfiddle.net/Sohnee/N6W7r/

答案 2 :(得分:0)

为什么要使用jQuery?

var colModelFiltered = colModel.filter(function(element, index, array){
 return element.name === "Grade";
});

编辑Kamal Deep Singh

您还需要输入:

 if (!Array.prototype.filter) {
  Array.prototype.filter = function(fun /*, thisp*/) {
  var len = this.length >>> 0;
   if (typeof fun != "function")
   throw new TypeError();

var res = [];
var thisp = arguments[1];
for (var i = 0; i < len; i++) {
  if (i in this) {
    var val = this[i]; // in case fun mutates this
    if (fun.call(thisp, val, i, this))
    res.push(val);
  }
}
return res;
};
}

document.ready()事件中也可以在IE上运行。

更多细节如下:
 Javascript: How to filter object array based on attributes?