-1

我有一个像

[
{
    "text": "Acute Myelocytic Leukemia"
},
{
    "text": "Acute Myeloid Leukemia, Adult"
},

{
    "text": "Dengue Fever"
},
{
    "text": "Diphtheria"
},
{
    "text": "Familial Cold Autoinflammatory Syndrome"
},
{
    "text": "Familial Mediterranean Fever"
},

]

现在我只想获取以'a'或'b'.....'z'开头的文本。

结果如(急性髓细胞性白血病、急性髓细胞性白血病、成人)

我怎样才能在 javascript 或 jquery 中得到这个结果。

请帮我。提前致谢。

4

6 回答 6

1

用纯Javascript?尝试这样的事情:

function iterate() {
    var data = [
        {"text": "Acute Myelocytic Leukemia"},
        {"text": "Acute Myeloid Leukemia, Adult"},
        {"text": "Dengue Fever"},
        {"text": "Diphtheria" }, 
        {"text": "Familial Cold Autoinflammatory Syndrome" },
        {"text": "Familial Mediterranean Fever" }
    ];

    for (var i = data.length - 1; i >= 0; i--) {
        if (data[i].text.indexOf('A') == 0) {
            // do whatever;
        }
    };
}

编辑:查看其他答案 - 如果您确实将 jquery 嵌入到您的网站中,更好的选择是听他们并使用 $.grep。当其他答案比我的更好时,我总是感到难过,但是,嘿-重要的是我们都学习并变得更好,对吗?;)

于 2014-05-22T15:14:30.567 回答
0

您可以使用$.grep()

var matches = $.grep(data, function(item, idx) {
    return item.text.toLowerCase().indexOf('a') == 0;
});
于 2014-05-22T15:14:28.930 回答
0

如果 Jquery 是一个选项Jsfiddle

$.grep([
{
"text": "Acute Myelocytic Leukemia"
},
{
"text": "Acute Myeloid Leukemia, Adult"
},

{
"text": "Dengue Fever"
},
{
"text": "Diphtheria"
},
{
"text": "Familial Cold Autoinflammatory Syndrome"
},
{
"text": "Familial Mediterranean Fever"
}

],function(item){return item.text[0] == 'A'});
于 2014-05-22T15:15:39.257 回答
0

也许只用 substr 检查第一个字母,然后用 regexp 测试?

var matchedResults = [];
for (i = 0; i < json.length; i++) {
    var index = json[i].text;
    var reg = /^[A-Za-z]+$/;
    var first = index.substr(0, 1).toLowerCase();
    if (reg.test(first)) {
     matchedResults[i] = index;   
    }
}

小提琴:http: //jsfiddle.net/X6u6k/1/

于 2014-05-22T15:19:47.800 回答
0

看来您想获取所有以字母开头的元素 (az,AZ)

假设您将对象分配给变量名称“koko”。尝试以下操作:

    for(var i=0;i < koko.length; i++) { 
        if (koko[i].text.match(/^[a-zA-Z]/)) 
            {
              console.log(koko[i].text);
           }
 }

match(/^[a-zA-Z]/) 使用正则表达式仅获取属性文本以字母开头的元素。

于 2014-05-22T15:20:01.437 回答
0

使用Array.prototype.filter(不需要 jQuery)。见http://jsfiddle.net/GycX6/1/

var matches = data.filter(function(obj){
    return obj.text.charAt(0).toLowerCase() == 'a';
});
于 2014-05-22T15:18:50.197 回答