从数组中删除几个单词-Javascript

从数组中删除几个单词-Javascript,javascript,arrays,frequency,Javascript,Arrays,Frequency,我有一组单词需要按频率排序。在我这么做之前,我需要去掉诸如“the”、“it”等词(实际上,任何少于三个字母的词),以及所有数字和任何以#开头的词(单词数组来自Twitter,尽管下面的示例只是维基百科中的一个随机段落) 我可以删除一个单词,但我一直在疯狂地尝试删除多个单词或一个范围。有什么建议吗?谢谢大家! HTML: 颅相学是一门伪科学,主要关注人类头骨的测量,其基础是大脑是大脑的器官,某些大脑区域具有局部的特定功能或模块。颅相学的显著特点是认为大脑区域的大小是有意义的,可以通过检查个体

我有一组单词需要按频率排序。在我这么做之前,我需要去掉诸如“the”、“it”等词(实际上,任何少于三个字母的词),以及所有数字和任何以#开头的词(单词数组来自Twitter,尽管下面的示例只是维基百科中的一个随机段落)

我可以删除一个单词,但我一直在疯狂地尝试删除多个单词或一个范围。有什么建议吗?谢谢大家!

HTML:


颅相学是一门伪科学,主要关注人类头骨的测量,其基础是大脑是大脑的器官,某些大脑区域具有局部的特定功能或模块。颅相学的显著特点是认为大脑区域的大小是有意义的,可以通过检查个体的头骨来推断。
JS:

//这是删除单词的函数
功能移除(arr){
var what,a=参数,L=a.length,ax;
while(长度>1&&arr.length){
什么=a[--L];
而((ax=arr.indexOf(what))!=-1){
阵列拼接(ax,1);
}
}
返回arr;
}
//这就是排序和计数
var getMostFrequentWords=函数(字){
var freq={},freqArr=[],i;
//将每个单词映射到“freq”中的频率。

对于(i=0;i我建议您执行
array[i]=null
(或
“”
),然后只清理数组中的空节点。使用
array\filter

测试: 代码:

var FORGETABLE_WORDS=',the,of,an,and,that,which,is,was';
var words=text.innerText.split(“”);
for(var i=0,word;word=words[i++];){
if(可伪造的单词.indexOf(','+单词+',')>-1 | |单词.length<3){
字[i-1]=”;
}
}
//falsy将被删除
filter(函数(e){returne});
//举例来说
output.innerHTML=words.join(“”);
//继续用“单词”数组做你的事情。
// ...​

我认为这比你目前的做法更干净。如果你还需要什么,我会更新这个答案。

我建议你做
array[I]=null
(或
“”
)然后清理你的数组空节点。你可以使用
array\35; filter

测试: 代码:

var FORGETABLE_WORDS=',the,of,an,and,that,which,is,was';
var words=text.innerText.split(“”);
for(var i=0,word;word=words[i++];){
if(可伪造的单词.indexOf(','+单词+',')>-1 | |单词.length<3){
字[i-1]=”;
}
}
//falsy将被删除
filter(函数(e){returne});
//举例来说
output.innerHTML=words.join(“”);
//继续用“单词”数组做你的事情。
// ...​

我认为它比您当前的操作方式更简洁。如果您还需要什么,我将更新此答案。

不从原始数组中删除,只需将
推送到一个新数组,它更简单,并且会使您的代码更短、更可读

var words = ['the', 'it', '12', '#twit', 'aloha', 'hello', 'bye']
var filteredWords = []

for (var i = 0, l = words.length, w; i < l; i++) {
    w = words[i]
    if (!/^(#|\d+)/.test(w) && w.length > 3)
        filteredWords.push(w)
}

console.log(filteredWords) // ['aloha', 'hello']
var words=['the','it','12','twit','aloha','hello','bye']
var filteredWords=[]
for(var i=0,l=words.length,w;i3)
过滤词推送(w)
}
console.log(filteredWords)/['aloha','hello']

演示:

只需将
推送到一个新的数组,而不是从原始数组中删除,这样做更简单,而且会使代码更短、更可读

var words = ['the', 'it', '12', '#twit', 'aloha', 'hello', 'bye']
var filteredWords = []

for (var i = 0, l = words.length, w; i < l; i++) {
    w = words[i]
    if (!/^(#|\d+)/.test(w) && w.length > 3)
        filteredWords.push(w)
}

console.log(filteredWords) // ['aloha', 'hello']
var words=['the','it','12','twit','aloha','hello','bye']
var filteredWords=[]
for(var i=0,l=words.length,w;i3)
过滤词推送(w)
}
console.log(filteredWords)/['aloha','hello']

演示:

我建议您执行
数组[I]=null
(或
)然后只清理数组中的空节点。如果您有任何问题,可以使用
Array#filter
轻松实现。这是一段非常有用和全面的代码。非常感谢。这非常有用。我建议您执行
Array[I]=null
(或
)然后清理你的数组空节点。如果你有任何问题,可以使用
Array#filter
轻松实现。这是一段非常有用和全面的代码。非常感谢。这非常有用。哇。就是这样。非常感谢。强烈建议不要隐藏括号ets,还建议使用分号D:哇,就是这样。非常感谢。强烈建议不要隐藏括号,还建议使用分号D:非常感谢您的帮助!在那里学习了一种新技术-谢谢!非常感谢您的帮助!在那里学习了一种新技术-谢谢
var FORGETABLE_WORDS = ',the,of,an,and,that,which,is,was,';

var words = text.innerText.split(" ");

for(var i = 0, word; word = words[i++]; ) {
    if (FORGETABLE_WORDS.indexOf(',' + word + ',') > -1 || word.length < 3) {
      words[i-1] = "";
    }
}

// falsy will get deleted
words.filter(function(e){return e});
// as example
output.innerHTML = words.join(" ");

// just continue doing your stuff with "words" array.
// ...​
var words = ['the', 'it', '12', '#twit', 'aloha', 'hello', 'bye']
var filteredWords = []

for (var i = 0, l = words.length, w; i < l; i++) {
    w = words[i]
    if (!/^(#|\d+)/.test(w) && w.length > 3)
        filteredWords.push(w)
}

console.log(filteredWords) // ['aloha', 'hello']