2016-02-28 48 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

相關問題