我有一个这样的对象:
"info" : {
"interval": "Mon-Fri 8-11",
"interval1": "Mon-Fri 17-20",
"intervalSat": " Sat 8-11",
"intervalSat2": "Sat 17-20"
}
我想知道无论其索引如何,间隔或间隔发生了多少次。我的示例代码在这里,但它无法正常工作。
function countAccurrencies(info, keyName) {
var regex = new RegExp('(' + keyName + ')', 'gi');
var counter = 0;
for (var key in info) {
if (key.match(regex)) {
counter++;
}
}
console.log("count--------- " + counter)
return counter;
}
countAccurrencies的输出(info,' interval')---> count = 4这是错误的,但我希望count = 2 超出计数的货币(信息,' intervalSat)---> count = 2,它是对的 如果有人指导我会很棒。谢谢。
答案 0 :(得分:1)
我认为你在这种情况下误解了正则表达式。
(interval)
将匹配包含" interval"的anystring是否是" interval10"或" 10interval"。
如果你的"键"结构为" key"," key1"," key2"然后你应该匹配"键"部分加数字:
keyName + '[0-9]?$'
是你想要的正则表达式。 [0-9]?$表示字符串中的最后一个字符是数字0-9然后是字符串的结尾或者如果没有数字那么只是字符串的结尾。
var info = {
"interval": "Mon-Fri 8-11",
"interval1": "Mon-Fri 17-20",
"intervalSat": " Sat 8-11",
"intervalSat2": "Sat 17-20"
};
function countAccurrencies(info, keyName) {
var regex = new RegExp(keyName + '[0-9]?$', 'gi');
var counter = 0;
for (var key in info) {
if (key.match(regex)) {
counter++;
}
}
console.log("count--------- " + counter)
return counter;
}
countAccurrencies(info, "interval");
countAccurrencies(info, "intervalSat");

答案 1 :(得分:0)
这是有效的,你要检查是否有间隔'存在于字符串中,当然还有“intervalSat”#39;包括单词interval。您需要一个不同的方法,或者只允许在keyName之后使用数字的正则表达式。我还建议不要使用" object"作为一个变量名,我相信你有一个拼写错误" inerval"虽然我不确定逻辑是否符合你的期望。