Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 用第一次出现的索引替换文本中的单词_Javascript_List_Items - Fatal编程技术网

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 
我不知道我会怎么做

谢谢

以下是想法:

  • 你必须把句子分解成单词。断点可以是空格、逗号、新行等

  • 您可以创建2个数组。第一个包含所有单词,第二个仅包含唯一单词

  • 通过循环运行这两个数组,将它们与单词的第一次出现进行比较,并保存其索引

  • 这里有一个方法

    • 我以为你不需要标点符号,所以我删除了它们
    • 然后我创建了一个带有
      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)您已经尝试了什么?使用唯一数组而不是映射的好处是:)