[英]JavaScript: Number of given string in array
不知道如何用語言解釋這一點,但是javascript中是否有任何函數,當給定一個字符串時,將返回它在數組中出現的次數?
例如:
var arr = ["a","b","c","d","c","c","b"];
var repeats = arr.count("c");
repeats
等於3,因為“ c”出現3次。 我試圖查找一下,但是不確定如何寫,所以沒有得到任何有用的信息。
您可以創建自己的函數或將其添加到Array的原型中:
Array.prototype.count = function (val){
var result = 0;
for(var i = 0; i < this.length; i++){
if(this[i] === val) result++;
}
return result;
}
然后你可以做['a','b', 'a'].count('a') // returns 2
您可以使用array.filter()
var arr = ["a","b","c","d","c","c","b"]; var repeats = arr.filter(function(value) { return value==="c"; } ).length; console.log(repeats)
var search_word = 'me';
var arr = ['help','me','please'];
arr.filter(function(el){return el === search_word}).length;
如果函數的結果為true
則filter函數將返回該元素。 該函數在數組的每個元素上調用。 在這種情況下,我們正在將數組元素與搜索詞進行比較。 如果它們相等(真),則返回該元素。 最后得到所有匹配項的數組。 使用.length
簡單地給我們結果數組中的項目數。 有效地,計數。
如果您想要更強大的功能,例如計算包含字母l的單詞的數量,則可以標記字符串並掃描索引,或者使用一些更昂貴但更強大的正則表達式:
var search_word = 'l';
var arr = ['help','me','please'];
arr.filter( function(el){ return ( el.match(search_word) || [] ).length }).length;
請注意,match還返回匹配元素的數組,但是不成功的匹配將返回undefined
而不是空數組,這將是首選。 我們需要一個數組來使用.length
(內部的數組),否則將導致錯誤,因此我們添加|| []
|| []
可以滿足找不到匹配項的情況。
arr.filter(function(v){return v=='c';}).length
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.