javascript 如何grep包含在javascript或jquery中的JSON数组

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/12279037/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-10-26 15:48:24  来源:igfitidea点击:

How to grep the JSON array contains in javascript or jquery

javascriptjqueryjson

提问by Ugesh Gali

   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');
});

How to query the "fname" which contains letter "j" using grep function.

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

回答by Alnitak

Using the ES5 standard function Array.filterto only return the elements matching the predicate:

使用 ES5 标准函数Array.filter只返回匹配谓词的元素:

Starting with "j"

以“j”开头

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

or, containing "j"

或者,包含“j”

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

回答by VisioN

You can use indexOf:

您可以使用indexOf

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

DEMO:http://jsfiddle.net/Nhmwk/

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

回答by elclanrs

You can do this with vanilla js like so:

你可以像这样使用 vanilla js 来做到这一点:

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;
}());

You can easily test stuff by changing the regex, for example you could test for names that startby jinstead of containwith /^j/

您可以通过更改正则表达式,例如,你可以测试名称容易测试的东西,开始j,而不是包含/^j/

Demo:http://jsfiddle.net/elclanrs/2Bw2y/

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

回答by Dhanasekar

You can use Index Of function:

您可以使用 Index Of 功能:

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;
});

Fiddle: http://jsfiddle.net/kYXPa/

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