2016-02-28 85 views
0

基本上,我要扫描一些阵列,它里面含有的关键词,例如:获取数组值,如果包含关键字

arr = [ {"name":"apple", "count": 2}, 
{"name":"orange", "count": 5}, 
{"name":"pear", "count": 3}, 
{"name":"orange 356", "count": 16}, 
{"name":"orange fsa", "count": 15},] 

我想获得橘,橙356和橙色FSA 。我试图使用不同的Jquery方法来完成我的功能。

var newArr = arr.filter(function(item){ 
    return item.name == "orange"; // tried = and === but no luck 
}); 
console.log("Filter results:",newArr); 

和替代:

var newArr = []; 

for(var i= 0, l = arr.length; i< l; i++){ 
    if(arr[i].name = "orange"){ 
    newArr.push(arr[i]); 
     } 
    } 
    console.log("Filter results:",newArr); 

但它只返回ARR [1]对我来说,怎么可能我能得到的一切含有 “橙色”?

解决方案:

var newArr = []; 

var newArr = arr.filter(function(item){ 
    return item.eman.indexOf("orange")!=-1; 

}); 

document.getElementById("123").innerHTML = "Filter results:"+JSON.stringify(newArr); 
+0

您将源数组命名为'Arr',同时在您的函数中将其命名为'arr' –

+0

[如何检查一个字符串是否包含另一个子字符串?](http://stackoverflow.com/questions/1789945/how-can-i-check-if-one-string-contains-another-substring) – Abhijeet

+0

感谢提醒,我修改了它,如果它真的是重复的,我应该删除这个重复。 – anson920520

回答

1

您可以用String的indexOf功能,例如,而不是:

return item.name == "orange"; 

你这样做:

return item.name.indexOf("orange") != -1; 

字符串indexOf()方法返回指定搜索词首次出现在字符串中的位置,如果找不到搜索词,则返回-1。

+0

谢谢,我已经选择了你的答案,因为正确的答案是因为你对我的方法做了一些基本的修改,这些修改为我提供了一个很好的教训,谢谢。 – anson920520

+0

享受编码,不要忘记享受你的周末。 –

1

使用String.prototype.indexOf()这将搜索字符串的return index,如果它大于,这意味着search串存在于串英寸

试试这个:

var arr = [{ 
 
    "name": "apple", 
 
    "count": 2 
 
}, { 
 
    "name": "orange", 
 
    "count": 5 
 
}, { 
 
    "name": "pear", 
 
    "count": 3 
 
}, { 
 
    "name": "orange 356", 
 
    "count": 16 
 
}, { 
 
    "name": "orange fsa", 
 
    "count": 15 
 
}] 
 

 
var newArr = arr.filter(function(item) { 
 
    return item.name.indexOf("orange") > -1; 
 
}); 
 
console.log(newArr);
<script src="http://gh-canon.github.io/stack-snippet-console/console.min.js"></script>

+0

感谢您的努力,我很高兴您甚至为我制作了一个代码片段。 – anson920520

+0

很高兴帮助! _快乐编码_ – Rayon

相关问题