我想计算字符在文本中出现的次数,然后显示每个字符的总计。我的主要问题是第一部分。基于另一个属性设置嵌套对象属性
这里是我的代码快照至今:
//define text and characters to be searched for
var theArticle = document.getElementById('theText'),
docFrag = document.createDocumentFragment(),
theText = theArticle.innerText,
characters = {
a: {
regExp: /a/g,
matches: [],
count: 0
},
b: {
regExp: /b/g,
matches: [],
count: 0
},
c: {
regExp: /c/g,
matches: [],
count: 0
}
etc…
}
for (var key in characters) {
if (characters.hasOwnProperty(key)) {
var obj = characters.key;
for (var prop in obj) {
if (obj.hasOwnProperty(prop)) {
matches = theText.match(regExp); // pretty sure my problem is here
count = matches.length; // and here
}
}
}
}
我想遍历所有的字符集的基础上matches
长度基于regExp
的matches
的价值和count
值。
这个问题的最佳答案是最接近我解决我的问题。 Access/process (nested) objects, arrays or JSON
我已经可以发现有两件事情错了:1)没有必要的检查:'如果(characters.hasOwnProperty(密钥))'里面你'为in'循环。 2)你不能用点符号访问一个变量属性:'var obj = characters.key;'应该是'var obj = characters [key];'。 3)同样,不需要检查:'if(obj.hasOwnProperty(prop))'。纠正这些事情(主要是#2),它应该按照预期工作。 – tenub
嗯,我认为解决了这个问题,但我想我在Chrome控制台中出现了误报。 – joel