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