提取从CKeditor textarea重复的单词

时间:2016-12-23 11:19:30

标签: jquery twitter-bootstrap ckeditor

我仍在研究一个jQuery脚本,它在Ckeditor下输出最重复的单词列表。 不是关键字密度,而是一个单词及其重复列表,不包括英语和意大利语中的停用词,以及一些html清除。 基于Bootstrap,jQuery和Ckeditor。

我已经使这个JSFiddle示例运行良好:https://jsfiddle.net/wzh7c42f/

问题是如果我在textarea文本中的任何位置写了“map”这个词,KeyDensityShow函数引发了一个错误,并准确地在行中

word_counts[positions[word]][1]++

我没有找到解决方案或者为什么会出错。 如果有人可以帮助找到原因并提供修复或更好的优化,我将非常感激。

事先提前

修改

使用提供的解决方案,我修复了我的代码并完美运行。 这是JSFiddle的功能版本:https://jsfiddle.net/09m7c2hw/

1 个答案:

答案 0 :(得分:2)

发生错误是因为您要将密钥数组的类型与undefined进行比较,这没有错(as we already saw here):

if (typeof positions[word] == 'undefined') {

但是,当密钥名称是保留字(如map - 一个有效的JavaScript函数)时,它会失败,因为它总是返回函数本身,即使它不存在进入阵列。

解决方案:

将snipet更改为以下内容:

if (!positions.hasOwnProperty(word)) {
    positions[word] = word_counts.length;
    word_counts.push([word, 1]);
} else {
    word_counts[positions[word]][1]++;
}

来自docs

  

此方法可用于确定对象是否具有   指定属性作为该对象的直接属性; 与中的不同   运算符,此方法不会检查对象的原型   链