Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.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 - Fatal编程技术网

Javascript 如何替换数组中的单词?

Javascript 如何替换数组中的单词?,javascript,Javascript,我正在尝试使用一些JavaScript,但遇到了一个问题,这就是为什么splice方法不能按我所希望的方式工作,所以我提出了一个挑战: 所以我应该写一个函数,把句子中以某个字母开头的所有单词都颠倒过来 例如: specialReverse("word searches are super fun", "s") ➞ "word sehcraes are repus fun" 实际上,我理解了练习,我开始解决它,但问题是我知道应该颠倒的词

我正在尝试使用一些JavaScript,但遇到了一个问题,这就是为什么splice方法不能按我所希望的方式工作,所以我提出了一个挑战:

所以我应该写一个函数,把句子中以某个字母开头的所有单词都颠倒过来

例如:

specialReverse("word searches are super fun", "s")
➞ "word sehcraes are repus fun"
实际上,我理解了练习,我开始解决它,但问题是我知道应该颠倒的词,我颠倒了它们,正如你在这里看到的:

函数特殊变量(s、c){
var words=s.split(“”);
words.findIndex(i=>{
if(i[0]==c){
var newWords=i.split(“”).reverse().join(“”);
单词拼接(i[0]==c,1,newWords,i)
}
})
回话
}
console.log(
specialReverse(“单词搜索非常有趣”,“s”)
)
试试这个。您可以使用,而不是使用findIndex

//specialReverse(“单词搜索非常有趣”,“s”)
//“sehcraes这个词很有趣”
功能反转(句子、字母){
让_ar=句子分割(/(\s+/);
返回映射(元素=>{
if(元素起始(字母)){
ele=ele.split(“”).reverse().join(“”);
}
返回ele;
}).加入(“”);
}

log(反向(“单词搜索非常有趣”,“s”))
因此,在您的问题中,当您发现字符以您通过函数传递的字符开头时,您需要替换现有的数组单词

.splice(startingIndex, numDeletions, replacement1, replacement2, ... )
更正

words.splice(i[0]==c,1,newWords,i)
第一个参数应该是单词的索引,您已经找到了以传递字符开头的字符串,这里是一个布尔值

因此,您可以使用
findIndex(item,index)
的第二个参数来获取索引。请参阅下面更新的代码段

函数特殊变量(s、c){
var words=s.split(“”);
words.findIndex((项目,索引)=>{
如果(项目[0]==c){
var newWords=item.split(“”).reverse().join(“”);
单词拼接(索引,1,新词)
}
})
返回单词。join(“”)
}
console.log(
specialReverse(“单词搜索非常有趣”,“s”)

)
您可以拆分单词,然后查找要反转的单词

function reverseWord(word) {
  var reversed = "";
  for (var i = word.length - 1; i >=0; --i) {
    reversed += word.charAt(i);
  }
  return reversed;
}

function specialReverse(words, ch) {
   return words.split(/\s+/).map(function(word) {
      return word.startsWith(ch) ? reverseWord(word) : word;
   }).join(" ");
}

console.log(specialReverse("word searches are super fun", "s"));
这项工作:

函数特殊变量(s、c){
让words=s.split(“”);
words.find((元素,索引)=>{
if(元素[0]==c){
让newWords=element.split(“”).reverse().join(“”);
words[index]=newWords;//替换该特定索引的值
}
})
回话
}
让x=specialReverse(“单词搜索非常有趣”,“s”)

console.log(x)
您可以尝试以下操作:

const reverseeword=word=>word.split(“”.reverse().join(“”)
const reverseIfChar=(句子,c)=>句子分割(“”)
.map(word=>word.startsWith(c)?reverseWord(word):word
.join(“”)

log(reverseIfChar(“abc dfg 010”,“d”))
@med通过es6方法和不必要的返回将相同的逻辑简化为一行。检查答案@med根据问题添加了更正部分并进行了解释。请检查一下如何@mplungjan为什么不让代码片段保留下来。当我们可以呆在这里时,为什么我们必须去JSFIDLE?基本上与曾经固定使用StartWith的情况相同,这是它的区别,为什么@mplungjan includes已经被StartWith取代,所有浏览器都支持StartWith吗?支持StartWith的浏览器都支持StartWith。带上你的代码,留下我从“word”改过来的“word”,看看它也会带上,因为它包括“s”,即使它不以“s”开头