我正在尝试检查字符串中所有数组项的每个实例。实施例;
var string = "aa bb ccc";
var array = ["a", "b", "c"];
这应该执行我的代码7次 - 对于字符串中的任何数组项的每个实例执行一次。这很难解释,但我希望这个例子已经足够了。
另一个解释代码示例;
$.each(ArrayItem in string) {
//execute code
}
我无法理解这一点,并且还没有找到任何远程工作方式。
修改
我想用这个来为每个字母添加一个价格 - 比如“a,b,c,d,e,f,g”花费1美元,而剩下的花费2美元 - 我需要检查每个实例我的字符串中的数组项目,并计算价格。
答案 0 :(得分:2)
你可以在for循环中使用while + exec而不是数组项:
var string = "aa bb ass ccc ass"
var array = ["ass", "b", "c"]
var m
array.forEach(function(item) {
var reg = RegExp(item, 'g')
while ((m = reg.exec(string)) !== null) {
console.log('match', m[0])
}
})
答案 1 :(得分:1)
使用string
拆分spread operator
并对其进行迭代,以检查array
是否包含该数组中的任何元素。
var string = "aa bb ccc";
var array = ["a", "b", "c"];
[...string].forEach(v => array.some(function(c){
if (c == v) {
console.log('code executed');
}
}));
答案 2 :(得分:0)
您必须按' '
分割字符串以获取子字符串数组,然后使用forEach
或$.each
循环遍历它们:
劈裂:
var strings = string.split(' ');
或更有效:
var strings = string.trim() // remove sorrounding spaces
.split(/\s+/); // split by any number of spaces
使用forEach
循环播放:
strings.forEach(function(str) {
// use str
});
使用$.each
循环播放:
$.each(strings, function(i, str) {
// use str
});
答案 3 :(得分:0)
此功能将完成您的工作
function checkString(a){
for(i=0;i<a.length;i++)
{
if(a[i]!==" "){
if (yourArray.indexOf(a[i]) > -1) {
//this line executes 7 times if the string a has 7 characters;
}
}
}
}
答案 4 :(得分:0)
您可以使用对象并计算字母的外观。之后,您可以按不同的价格值分开。
var string = "aa bb ccc xyz",
array = ["a", "b", "c"],
count = Object.create(null);
string.split('').forEach(function (a) {
if (a !== ' ') {
count[a] = (count[a] || 0) + 1;
}
});
Object.keys(count).forEach(function (k) {
if (array.indexOf(k) !== -1) {
console.log('found ' + k + ' of array: ' + count[k] + ' times');
} else {
console.log('found ' + k + ': ' + count[k] + ' times');
}
});
答案 5 :(得分:0)
将split
方法与“”参数一起使用。
https://www.w3schools.com/jsref/jsref_split.asp
var string = "aa bb ccc",
array = string.split(" ");
或者您也可以使用lodash:https://lodash.com/docs/4.17.4#split