簡體   English   中英

JavaScript:數組中給定字符串的數量

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM