Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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 如何使用数组和for循环解决此问题?_Javascript_Arrays_For Loop - Fatal编程技术网

Javascript 如何使用数组和for循环解决此问题?

Javascript 如何使用数组和for循环解决此问题?,javascript,arrays,for-loop,Javascript,Arrays,For Loop,我有一个字符串,比如“你好,我叫詹姆斯,你叫什么名字,你叫什么名字” 它应该输出“你好,我的名字是詹姆斯,你的名字是什么3 6 7 4 8 3” 所以基本上,如果单词被重复,那么它们就会被替换为第一个单词出现的位置。例如,如果句子是“the house is best”,它会将重复出现的单词“the”替换为第一个“the”出现的位置。因此,它应该输出“房子是1个最好的”首先,要在每个空间拆分字符串。您可以使用split方法执行此操作 var sentence = "hello my name i

我有一个字符串,比如“你好,我叫詹姆斯,你叫什么名字,你叫什么名字” 它应该输出“你好,我的名字是詹姆斯,你的名字是什么3 6 7 4 8 3”
所以基本上,如果单词被重复,那么它们就会被替换为第一个单词出现的位置。例如,如果句子是“the house is best”,它会将重复出现的单词“the”替换为第一个“the”出现的位置。因此,它应该输出“房子是1个最好的”

首先,要在每个空间拆分字符串。您可以使用
split
方法执行此操作

var sentence = "hello my name is James and what is your name and what is your name";
var words = sentence.split(" ");
var newSentence = words.join(" ");
然后您需要两个嵌套的
for
循环。第一个检查每个单词,第二个检查前面的每个单词。如果它们是一样的,那就是

for (var i = 0; i < words.length; i++) {
    for (var j = 0; j < i; j++) {
        if (words[i] == words[j]) {
            words[i] = j + 1;
            break;
        }
    }
}

如果有标点符号或大写字母,此方法将无法正常工作。可以使用原始字符串上的
toLowerCase
方法固定大写字母。标点符号会更复杂,如果你给我一些时间的话,我会弄清楚的。

使用
reduce
最简单:

函数解析(str){
找到的变量={},
指数=0;
返回str
.拆分(“”)
.reduce((prev,el)=>{
如果(!found[el]){
发现[el]=索引;
上推(el)
}否则{
上推(找到[el])
} 
索引++;
返回上一个;
},[])。加入(“”);
}

log(parse('Hellow my friend this not this not this not working with大写this my Hellow')请给我们一个可靠的示例和正确的预期输出。如果你希望得到高质量的答案,你的帖子质量就需要提高。谢谢你试过了吗?我给的字符串是“你今天怎么样,明天有空吗?”所以它应该返回“你今天怎么样,明天有空吗?”我试过使用循环并拆分字符串。但在那之后,我不知道如何比较if和else语句,我陷入了困境。StackOverflow不是一个让人们为你做作业的地方。“这很有帮助,非常感谢”