Javascript 用第一次出现的索引替换文本中的单词
我必须创建一个程序,可以接受一个句子,如Javascript 用第一次出现的索引替换文本中的单词,javascript,list,items,Javascript,List,Items,我必须创建一个程序,可以接受一个句子,如 my arms are red, my legs are red and I am red 并输出句子中单词第一次出现的索引,因此该句子的期望输出将为 12341634910114 我不知道我会怎么做 谢谢以下是想法: 你必须把句子分解成单词。断点可以是空格、逗号、新行等 您可以创建2个数组。第一个包含所有单词,第二个仅包含唯一单词 通过循环运行这两个数组,将它们与单词的第一次出现进行比较,并保存其索引 这里有一个方法 我以为你不需要标点符号,所
my arms are red, my legs are red and I am red
并输出句子中单词第一次出现的索引,因此该句子的期望输出将为
12341634910114
我不知道我会怎么做
谢谢以下是想法:
- 我以为你不需要标点符号,所以我删除了它们
- 然后我创建了一个带有
和key=word
的映射李>value=first
- 然后我通读这个句子,用索引替换每个单词
var text=“我的手臂是红色的,我的腿是红色的,我是红色的”;
//删除标点符号
text=text.replace(/[,\/\\\!$%\^&\*;:{}=\-\u`~()]/g,“”;
//拆分文本
var words=text.split(“”);
//创建单词和第一个索引的映射
var m=新映射();
var i=1;
words.forEach(函数(word){
//第一次发生?
if(m.get(word)=未定义){
m、 set(word,i++);
}
});
//用索引替换单词
var l=[];
words.forEach(函数(word){
l、 推(m.get(word));
});
console.log(l.join(“”)代码>您的问题有误。如果某个单词重复,则应填写索引。
所以指数应该是
12341634910114(123416349,10,11,4)
var str=“我的手臂是红色的,我的腿是红色的,我是红色的”;
var words=str.replace(“,”).split(“”);
var发生=[];
var pos=[];
//console.log(words.length);
for(var i=0;i //console.log(出现[1][0])代码>在单词边界拆分.match(/\b(\w+)\b/g)
使用Array.map将每个单词映射到出现次数
通过使用array.slice
仅将数组切片到当前索引来查找出现次数,并使用数组查找出现次数。在该切片数组上筛选
同样的事情可以用很多不同的方式来完成,例如使用简单的循环
var result=“我的手臂是红色的,我的腿是红色的,我是红色的?”。匹配(/\b(\w+)\b/g)。映射(函数(currentValue,索引,数组){
返回array.slice(0,索引+1).filter(x=>x==currentValue).length;
}).加入(“”);
console.log(“结果”,result)代码>您已经尝试了什么?使用唯一数组而不是映射的好处是:)