var search = ["ab", "cd", "ef"];
var string = "ab yz cd wx ef uv ab yz cd";
我想创建一个函数,可以接收搜索词并找到它们中有多少出现在字符串中,然后输出如下:
[{"ab": 2}, {"cd": 2}, {"ef": 1}]
我可以使用单个数组执行此操作,但是现在我需要使用2个独立的数组。任何想法都会有帮助!我想我想分割字符串,但不知道如何使用'search'变量中的文本来搜索分割字符串中的内容。
答案 0 :(得分:6)
将Array#map
和String#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 :(得分:1)
你可以create
一个空对象,迭代search
并用0初始化对象中的所需项目。
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);

答案 2 :(得分:0)
你可以Array.prototype.map()你的def CVangles(theta, geo, key):
"""
Parameters
----------
theta : float
The crank angle, between 0 and 2*pi
geo : struct
The structure with the geometry obtained from get_geo()
key : string
The name of the involute to be considered
"""
CV = struct()
CV.Outer = struct()
CV.Inner = struct()
if key.startswith('c1.'):
alpha = int(key.split('.')[1])
CV.Outer.involute = INVOLUTE_FI
CV.Outer.phi_0 = geo.phi_fi0
return CV
数组,并为数组中的每个项目返回一个对象作为键及其值search
中的相应出现长度:
string