在回文+javascript中查找镜像索引

在回文+javascript中查找镜像索引,javascript,for-loop,palindrome,indices,Javascript,For Loop,Palindrome,Indices,我的代码: function palindrome(str) { return str.split('').every((char, i) => { return char === str[str.length - i - 1] ? true : false; }) } palindrome('abcba'); 在使用debugger和console.log时,我得到了为什么我们在比较语句中写-I的原因,因为这会让我们找到另一侧的正确索引,但是从一开始怎

我的代码:

function palindrome(str) {
    return str.split('').every((char, i) => {
        return char === str[str.length - i - 1] ? true : false;
    })
}

palindrome('abcba');
在使用debugger和console.log时,我得到了为什么我们在比较语句中写-I的原因,因为这会让我们找到另一侧的正确索引,但是从一开始怎么知道要这样做呢

有没有一个解释或某种图表来解释如何或为什么-我会让你找到反面人物的索引?我只是觉得很难把我的东西包起来


非常感谢您的帮助,尽管我认为这是一个很难解释的问题。

好的,让我们把它分解一下

str.split('')
此行将“abcba”字符串拆分为一个数组。结果将是:

['a', 'b', 'c', 'b', 'a']
现在您有了一个数组,可以循环并从数组中选择某些索引。这在回文的情况下非常有用

因为您想知道镜像时单词是否相同。从数组的头部和尾部开始计算

数组中的第一项是0[0]的索引,最后一项取决于数组。但是如果你有一个数组并减去[array.length-1],在单词abcba中是[5-1],那么你得到的是数组中的最后一项,它的索引是4[4]

因此,在循环中,在数组中从左向右移动。并将第一个值与最后一个值进行比较。您的示例使用的方法是,如果循环中的每个条件都返回true,则在最后返回true,否则返回false

循环还公开当前索引值。在你的例子中叫做i,索引的缩写。如果完成了第一个值和最后一个值的比较,则希望切换到数组中的下一项,以开始比较第二个值和第一个值与最后一个值。这就是公式的来源

str.split('').every((char, i) => {
  return char === str[str.length - i - 1] ? true : false;
});
在第一次迭代中,i的值为0。所以你有一个公式:数组的长度,减去0,再减去1。这是最后一项

在第二次迭代中,我现在是1。这意味着我们在数组的第二项中。如果你再次对公式应用i,你可以从数组的末尾开始倒数:数组的长度,减去1,再减去1。加起来是3

在下一次迭代中,你会得到一个重叠,但在偶数单词的情况下不会。但在这里,他们都在检查c是否匹配c

这个过程一直持续到数组中的最后一项,循环继续向上计数,公式继续向下计数


我希望这是有意义的,并且有助于您更好地理解它。

您是否在问为什么要使用str.length-I-1以及它是如何工作的?或者人们是如何解决回文函数难题的?我不知道任何标准的解释,但我想如果你试着画str,str[I]和str[str.length-I-1]的图表,那将极大地帮助你把你的头绕在它周围。因此,基本上你说的是,如果我们从左向右移动,最初它是0,然后向前移动一个空间进入下一个迭代,你加1-当从右向左移动时,你在另一边做相反的操作,你会减去1-我想我得到了!这是一个很难解释的问题,你真的付出了很多努力-非常感谢!是的,这正是我的意思。很高兴我能帮忙。
str.split('').every((char, i) => {
  return char === str[str.length - i - 1] ? true : false;
});
// Second iteration.
// Second and first to last item in array.
// [1] and [array.length - 2] or [3].

       ↓         ↓
['a', 'b', 'c', 'b', 'a']
// Third iteration.
// Third and and second to last item in array.
// [2] and [array.length - 3] or [2].

            ↓
            ↓
['a', 'b', 'c', 'b', 'a']