首页 > 解决方案 > 函数在迭代中返回 True 而不是 False

问题描述

我在 edabit 上做了一些挑战,我的输出遇到了问题。所以我必须创建一个函数,它接收一个数组(老虎机结果),如果数组中的所有元素都相同,则返回 true,否则返回 false。该数组将包含 4 个元素。有人可以解释为什么我的代码不能以正确的方式工作。

我已经尝试过其他输入,它工作正常。

   'use strict';

   function array_Validator(e1,e2,e3,e4)
   {
       let m_Array=[e1,e2,e3,e4];
       for(let i=0;i<m_Array.length-1;i++)
       {
           for(let x=i;x<m_Array.length-1;x++)
           {
               if(m_Array[i]!==m_Array[x+1])
               {
                   return false;
               }
               else
               return true;
           }
       }
   }


  let u_Result=array_Validator("SS","SS","Ss","Ss");

   console.log(u_Result);

因此,当我输入 Ss 时,它是真而不是假。

标签: javascriptarrays

解决方案


您需要移动return true到函数的末尾,并且可以使用单个循环并相互检查第一个元素。

'use strict';

function array_Validator(e1, e2, e3, e4) {
    let m_Array = [e1, e2, e3, e4];
    for (let i = 1; i < m_Array.length; i++) {
        if (m_Array[0] !== m_Array[i]) return false;
    }
    return true;
}


let u_Result = array_Validator("SS", "SS", "SS", "Ss");

console.log(u_Result);


推荐阅读