2016-12-09 46 views
-4
var search = ["ab", "cd", "ef"]; 
var string = "ab yz cd wx ef uv ab yz cd"; 

我想創建一個可以在搜索項,並找到字符串中有多少人會發生作用,然後讓輸出的東西像:的Javascript:計算陣列的出現在字符串變量並返回長度

[{"ab": 2}, {"cd": 2}, {"ef": 1}] 

我可以用一個數組做到這一點,但現在我有2個獨立的數組我需要工作。任何想法都會有幫助!我想我想拆分字符串,但不知道如何使用「搜索」變量中的文本來搜索拆分字符串中的內容。

+0

Thi再次提問。這就像是某種測試,每個人都需要這些日子或某事。這個問題每兩小時問一次 – Liam

+0

你有沒有試圖自己解決這個問題?你有什麼困難? – Liam

回答

0

您可以Array.prototype.map()search陣列和在string返回一個對象數組中的每個項目,如鑰匙和自己的價值觀各自的出現長度:

var search = ["ab", "cd", "ef"], 
 
    string = "ab yz cd wx ef uv ab yz cd", 
 
    result = search.map(function (item) { 
 
     return { 
 
     [item]: string.split(item).length - 1 
 
     }; 
 
    }); 
 

 
console.log(result);

6

使用Array#mapString#match方法與word boundary regex

var search = ["ab", "cd", "ef"]; 
 
var string = "ab yz cd wx ef uv ab yz cd"; 
 

 
console.log(
 
    // iterate over the array 
 
    search.map(function(v) { 
 
    // initialize object for array element 
 
    var obj = {}; 
 
    // define array element as the number of count 
 
    // regex can be generate from string using RegExp 
 
    // constructor and use modifrier `g` for global match 
 
    obj[v] = string.match(new RegExp('\\b' + v + '\\b', 'g')).length; 
 
    // return the object 
 
    return obj; 
 
    }) 
 
)

1

你可以create一個空的對象,迭代search和零初始化的對象想要的物品。

然後splitstring並只計算哪些鍵是in的對象。

var search = ["ab", "cd", "ef"], 
 
    string = "ab yz cd wx ef uv ab yz cd", 
 
    count = Object.create(null); 
 

 
search.forEach(function (a) { 
 
    count[a] = 0; 
 
}); 
 

 
string.split(' ').forEach(function (a) { 
 
    a in count && count[a]++; 
 
}); 
 

 
console.log(count);

相關問題