4

考虑:

   var dummyArray =  [{
        "fname": "gali",
        "lname": "doe"
    }, {
        "fname": "john",
        "lname": "danny"
    }, {
        "fname": "joe",
        "lname": "dawns"
    }, {
        "fname": "liji",
        "lname": "hawk"
    }]

dummyArray = j$.grep(dummyArray, function(dt) {
             return (dt.fname== 'j');
});

如何使用grep函数查询包含字母“j”的“fname”?

4

4 回答 4

5

使用 ECMAScript 5 标准函数Array.filter仅返回与谓词匹配的元素:

以“j”开头

var j = dummyArray.filter(function(o) {
    return o.fname.charAt(0) === 'j';
});

或者,包含“j”

var j = dummyArray.filter(function(o) {
    return o.fname.indexOf('j') >= 0;
});
于 2012-09-05T11:17:19.240 回答
4

您可以使用indexOf

dummyArray = $.grep(dummyArray, function(dt) {
    return dt.fname.indexOf("j") != -1;
});

演示:http: //jsfiddle.net/Nhmwk/

于 2012-09-05T10:09:59.330 回答
0

您可以使用 vanilla JavaScript 执行此操作,如下所示:

dummyArray = (function(){
  var result = [];
  for (var i=0, l=dummyArray.length; i<l; i++)
    if (/j/.test(dummyArray[i].fname))
      result.push(dummyArray[i]);
  return result;
}());

您可以通过更改正则表达式轻松测试内容。例如,您可以测试以开头j不是包含with的名称/^j/

演示:http: //jsfiddle.net/elclanrs/2Bw2y/

于 2012-09-05T10:16:48.413 回答
0

您可以使用函数索引

dummyArray = $.grep(dummyArray, function(dt) {
    return dt.fname.indexOf("j") != -1;
});


// To be case-insensitive, use:
dummyArray = $.grep(dummyArray, function(dt) {
    return dt.fname.toLowerCase().indexOf("j") != -1;
});

小提琴:http: //jsfiddle.net/kYXPa/

于 2012-09-05T11:12:59.307 回答