Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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_Arrays - Fatal编程技术网

Javascript 如何确定数组是否有其他元素?

Javascript 如何确定数组是否有其他元素?,javascript,arrays,Javascript,Arrays,我有任何数组 var myArr = [1,1,1,1,1]; 如果数组中的所有元素都相同,则返回true,否则返回false 例如:myArr[1,1,1,1,1]返回true myArr[1,2,1,1,1]返回false 有人能帮我设计这个代码吗。这就是为什么会有这样的代码 var myArr=[1,1,1,1,2]; var myArr2=[1,1,1,1,2,3,4,5]; console.logmyArr.everyo=>myArr2.indexOfo>=0创建一个函数,如果数组

我有任何数组

var myArr = [1,1,1,1,1];
如果数组中的所有元素都相同,则返回true,否则返回false

例如:myArr[1,1,1,1,1]返回true

myArr[1,2,1,1,1]返回false

有人能帮我设计这个代码吗。

这就是为什么会有这样的代码

var myArr=[1,1,1,1,2]; var myArr2=[1,1,1,1,2,3,4,5];
console.logmyArr.everyo=>myArr2.indexOfo>=0创建一个函数,如果数组的任何元素不等于1,则返回false

函数retStat myArr{
对于var i=0;i小错误,您正在检查上一个循环中未定义的下一个元素myArr[i+1]

检查条件myArr.length-1


这也可以在不使用循环的情况下实现。您可以检查数组的整个字符串表示设置的第一个元素。如果找到字符串中所有字符的匹配项,它将为您提供空值。使用此选项,您可以知道数组中是否存在所有相同的元素或不同的元素

函数isSamearr{ var str=arr.join; var re=new RegExparr[0],g; var replacedStr=str.replace,; return!booleanplacedstr; } var myArr=[1,1,1,1,1]; console.logisSamemyArr; myArr=[1,2,1,1,1]; console.logisSamemyArr; myArr=[1,1,1,5,1];
console.logisSamemyArr;因为要检查数组中的所有元素是否相同,所以可以将所有元素与第一个元素进行比较。 函数在回调返回true时返回,所以在发现第一个不匹配后不会调用回调

控制台日志检查[1,1,1]; 控制台日志检查[1,2,3]; 控制台。日志检查[]; 函数校验{ 如果!arr.length{ 返回false; } return!arr.someel=>el!==arr[0]; } 我认为这是可行的:

<script type="text/javascript">
var myArr = [1,1,1,1,1];
flg=true;
for(var i=0; i<myArr.length; i++)
{
    if(i==(myArr.length-1))
    {
        if(myArr[i]!=myArr[i-1])
        {
            flg=false;
        }
    }
    else
    {
        if(myArr[i] != myArr[i+1])
        {
            flg=false;
            return false;
        }
    }
}
console.log(flg);
</script>

下面是一个受这个答案启发的解决方案

代码段中的以下函数做什么

删除所有重复项, 如果.length==1,即所有值都相同,则返回true!。 函数数组\u all\u samea{ 返回a.filterfunctionitem,位置{ 返回a.indexOfitem==pos; }.长度==1; } var myArr1=[1,1,1,1,1]; console.logarray\u all\u samemyArr1; var myArr2=[1,2,1,1,1];
console.logarray\u all\u samemyArr2;可能重复我会更新你的答案,以显示用户的要求。他没有提到第二个数组。虽然你的答案显示了如何使用它检查更多变量,但这可能没问题。但你应该先回答主要问题…这只是一个元素。其次,如果你要如何检查数组与数组,请向用户展示如何使用。every将能够说出哪个索引/值未通过测试,而不仅仅是说false。@Matt这是我从数组中所有元素得到的结果,然后我们返回true,否则falseOP只关心给定数组中的所有元素是否都相同。因此,它们是itera用一个数组检查i+1是否等于当前值。在这种情况下,它是if执行正常for循环的重复,并且您已经标记为false,只需短路循环。如果有一百万个元素,并且您在3次迭代后找到了答案…没有必要通过其他一百万个元素得出相同的结果。现在如果y你在标记哪些不相同,哪些会不同…但最好短路。有数百万个元素,可以使用不同的算法,即二进制搜索。我对正则表达式一无所知,也不知道替换在场景后面是如何工作的,所以只是问一下,但是替换是否循环字符串以找到匹配的字符?会吗还想提到的是,在您发现标志已设置后,您可以将回路短路。flg不会变得比false更假。我不会说myArr[I]!=1,因为他的下一次检查可能不会寻找1。他很可能会,但没有说明,并且基于他的示例,其中包含2,那么它对其他值是开放的。我会使1像下一个元素一样更具动态性。或者在索引1处开始循环,并始终检查索引0。
for(var i=0; i<myArr.length-1; i++){
    if(myArr[i] != myArr[i+1]){
        flg = false; 
        break;
    }
}
<script type="text/javascript">
var myArr = [1,1,1,1,1];
flg=true;
for(var i=0; i<myArr.length; i++)
{
    if(i==(myArr.length-1))
    {
        if(myArr[i]!=myArr[i-1])
        {
            flg=false;
        }
    }
    else
    {
        if(myArr[i] != myArr[i+1])
        {
            flg=false;
            return false;
        }
    }
}
console.log(flg);
</script>