Javascript 修改函数以仅反转第三个单词

Javascript 修改函数以仅反转第三个单词,javascript,string,ecmascript-6,Javascript,String,Ecmascript 6,请记住,这个问题可能看起来重复,但以前没有问过 我应该使用什么来修改下面的函数,使其在保持当前位置(切片或其他)的同时,只反转字符串中的每三个单词 function reverseStringWords (sentence) { return sentence.split(' ').map(function(word) { return word.split('').reverse().join(''); }).join(' '); } console.log(reverseSt

请记住,这个问题可能看起来重复,但以前没有问过

我应该使用什么来修改下面的函数,使其在保持当前位置(切片或其他)的同时,只反转字符串中的每三个单词

function reverseStringWords (sentence) {
  return sentence.split(' ').map(function(word) {
    return word.split('').reverse().join('');
  }).join(' ');
}
console.log(reverseStringWords("london glasgow manchester edinburgh oxford liverpool"));
目前它是nodnol wogsalg retsehcnam hgrubnide drofxo looprevil

它应该是
伦敦格拉斯哥雷塞纳姆爱丁堡牛津looprevil

您也可以像下面这样使用“Array.map”

解释-我们需要计算出每三个元素,这意味着如果我们有一些数字代表我在遍历数组时所处的位置,那么我们可以检查该位置3的余数,如果它是0,则表示它的第三、第六、第九。。。元素

现在,为了找到余数,我们有了
%
操作符,一些数字将帮助我们确定我们所处的元素位置是
索引
,这是
映射
函数中的第二个参数,但我们必须将1添加到
索引
,因为在Javascript中,索引以0而不是1开头

因此,查找每三个元素的逻辑变成
(i+1)%3==0

功能反转单词(句子){
返回句子.split(“”).map((d,i)=>
(i+1)%3==0
?[…d]。反向()。联接(“”)
:d)
}
console.log(reverseStringWords(“伦敦-格拉斯哥-曼彻斯特-爱丁堡-牛津-利物浦”)
您也可以使用下面的“Array.map”

解释-我们需要计算出每三个元素,这意味着如果我们有一些数字代表我在遍历数组时所处的位置,那么我们可以检查该位置3的余数,如果它是0,则表示它的第三、第六、第九。。。元素

现在,为了找到余数,我们有了
%
操作符,一些数字将帮助我们确定我们所处的元素位置是
索引
,这是
映射
函数中的第二个参数,但我们必须将1添加到
索引
,因为在Javascript中,索引以0而不是1开头

因此,查找每三个元素的逻辑变成
(i+1)%3==0

功能反转单词(句子){
返回句子.split(“”).map((d,i)=>
(i+1)%3==0
?[…d]。反向()。联接(“”)
:d)
}

console.log(reverseStringWords(“伦敦格拉斯哥-曼彻斯特-爱丁堡-牛津-利物浦”)
一个选项是使用正则表达式-在一个组中捕获前两个单词及其空格,然后在另一个组中捕获第三个单词,并返回第一个组与第二个反向组连接:

const reverseStringWords=str=>str.replace(
/((?:\w+{2})(\w+)/g,
(两个字,第三个字)=>两个字+[…第三个字].reverse().join(“”)
);

console.log(reverseStringWords(“伦敦、格拉斯哥、曼彻斯特、爱丁堡、牛津、利物浦”)一个选项是使用正则表达式-在一个组中捕获前两个单词及其空格,然后在另一个组中捕获第三个单词,并返回与第二个组连接的第一个组:

const reverseStringWords=str=>str.replace(
/((?:\w+{2})(\w+)/g,
(两个字,第三个字)=>两个字+[…第三个字].reverse().join(“”)
);

console.log(reverseStringWords(“伦敦、格拉斯哥、曼彻斯特、爱丁堡、牛津、利物浦”)只需在map函数中添加一个索引i,然后检查是否是您想要的索引(从0开始)


只需将索引i添加到映射函数中,并检查是否是您想要的索引(从0开始)


提示:仅当要实现的单词计数器为==到3时,编辑第三行以拆分、反转和连接提示:仅当要实现的单词计数器为==到3时,编辑第三行以拆分、反转和连接什么意思?
[…]
是否有特征名称?3点(…)是ES6中引入的
扩展
运算符。在您的例子中,它是d.split(“”)的缩写形式,意思是(i+1)%3==0i是循环时元素的索引。现在索引的第一个元素以0开头,第二个元素以1开头,依此类推。。现在,为了得到每一个第三个元素,我们可以应用逻辑,就像-如果3的余数是0,那么它就是第三个元素。。在javascript中,我们使用“%”来查找余数,所以当==0时(i+1)%3表示它是第三、第六、第九。。。元素@Webappsdeva@Webappsdeva
%
是模数运算符。基本上,它告诉我们
(i+1)
项是否可以被3除,在这种情况下(如果它等于0,它意味着它可以被3除,否则它不能)
[…d]
意味着什么?
[…]
是否有特征名称?3点(…)是ES6中引入的
扩展
运算符。在您的例子中,它是d.split(“”)的缩写形式,意思是(i+1)%3==0i是循环时元素的索引。现在索引的第一个元素以0开头,第二个元素以1开头,依此类推。。现在,为了得到每一个第三个元素,我们可以应用逻辑,就像-如果3的余数是0,那么它就是第三个元素。。在javascript中,我们使用“%”来查找余数,所以当==0时(i+1)%3表示它是第三、第六、第九。。。元素@Webappsdeva@Webappsdeva
%
是模数运算符。基本上,它告诉你
(i+1)
项是否可以被3除,在这种情况下(如果它等于0,意味着它可以被3除,否则它不能)这个函数只反转第一个第三个数字,而不是第二个第三个数字,你说的是第三个,不是每3个,在这种情况下你应该检查是否是多个。查看更新的一个。此函数只反转第一个第三个数字而不是第二个第三个数字,您说的是第三个,不是每3个,在这种情况下您应该检查是否是多个。查看更新的一个。
function reverseStringWords (sentence) {
  return sentence.split(' ').map(function(word,i) {
    return (i+1)%3==0  ? word.split('').reverse().join('') : word;
  }).join(' ');
}