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を使用して、述語に一致する要素のみを返します。

「じ」から始まる

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

次のようにバニラ 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/^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 に答える