我有一个喜欢
的json[
{
"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中获得此结果。
请帮帮我。提前谢谢。
答案 0 :(得分: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。当其他答案比我的更好时,我总是感觉很糟糕,但是嘿 - 重要的是我们都学习并变得更好,对吧? ;)
答案 1 :(得分:0)
您可以使用$.grep()
:
var matches = $.grep(data, function(item, idx) {
return item.text.toLowerCase().indexOf('a') == 0;
});
答案 2 :(得分: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'});
答案 3 :(得分:0)
使用Array.prototype.filter(不需要jQuery)。见http://jsfiddle.net/GycX6/1/
var matches = data.filter(function(obj){
return obj.text.charAt(0).toLowerCase() == 'a';
});
答案 4 :(得分: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;
}
}
答案 5 :(得分:0)
似乎你想得到所有以字母开头的元素(a-z,A-Z)
假设您将对象绑定到变量名称&#39; koko&#39;。 尝试以下方法:
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] /)使用正则表达式仅采用属性文本以字母开头的元素。