Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.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中反转字符串后不改变其位置的字符串的字符数 有办法吗 数据流-alphxxdida。反转后-adidaxxhpla。所以这里x和a没有改变它的位置。我该怎么做 输入-alphxxdida 输出-4您可以筛选字符串中的字符,并与反向字符串中相应索引处的字符进行比较。过滤数组的长度将是保持不变的字符数 var str=“alphxxdida”; var reversed=[…str].reverse().join(“”); 常量same=[…str].filt

我想知道如何打印在JavaScript中反转字符串后不改变其位置的字符串的字符数

有办法吗

数据流-
alphxxdida
。反转后-
adidaxxhpla
。所以这里x和a没有改变它的位置。我该怎么做

输入-alphxxdida


输出-4

您可以筛选字符串中的字符,并与反向字符串中相应索引处的字符进行比较。过滤数组的长度将是保持不变的字符数

var str=“alphxxdida”;
var reversed=[…str].reverse().join(“”);
常量same=[…str].filter((char,i)=>char==reversed[i]);

console.log(相同的长度)如果处于“镜像”位置的字符是同一个字符,则字符在反转时不会改变。字符
n
从字符串开始的位置的“镜像”位置是字符
n
从字符串结束的位置

let mirroredChars=str=>{
让结果=[];
设halfLen=Math.ceil(str.length/2);
设lastIndex=str.length-1;
for(设i=0;iconsole.log(mirroredChars('alphxxdida'))这里有
reduce
。遍历到字符串的一半长度,比较字符串两端的字符并计数

更新:正如@Gershom指出的,修复了对奇数长度字符串的工作

const getCount=(str)=>
[…str.slice(0,str.length/2)]。减少(
(acc,char,i)=>acc+(char==str[str.length-1-i]?2:0),
str.length%2
);
var str=“alphxxdida”;
var str2=“alphxdida”;
log(str,getCount(str));

日志(str2,getCount(str2))您尝试了什么?告诉我们你是从哪里来的你的反向字符串似乎找到了一个额外的字符,所以如果我正确理解你的要求,你希望反向字符串中的字母数与原始字符串中的字母数相同。因此,遍历字符串并将原始[i]
与反向[i]
进行比较,每次相等时递增一个计数器。你具体在哪?我需要数数。不需要重复下半部分string@Gershom没有必要,但它使计算更易于理解和编写。这会对奇数长度字符串进行中断-
'alphxdida'
计数将是
2
而不是
3
@Gershom,说得好。你是对的。我刚刚修正并更新了答案。非常感谢。