Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/rest/5.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 我正在尝试编写一个函数isUniform()_Javascript_Arrays_Function_For Loop - Fatal编程技术网

Javascript 我正在尝试编写一个函数isUniform()

Javascript 我正在尝试编写一个函数isUniform(),javascript,arrays,function,for-loop,Javascript,Arrays,Function,For Loop,函数应该取一个数组,并将数组中的第一项与其他项进行比较。最后,如果数组中的所有项都相同,它应该在控制台上打印True,否则打印False。我的函数执行以下操作: function isUniform(list) { var firstItem = list[0]; for (var i = 0; i <=list.length; i++){ i++ if(firstItem === list[i]){ console.

函数应该取一个数组,并将数组中的第一项与其他项进行比较。最后,如果数组中的所有项都相同,它应该在控制台上打印True,否则打印False。我的函数执行以下操作:

function isUniform(list) {
    var firstItem = list[0];
    for (var i = 0; i <=list.length; i++){
        i++
        if(firstItem === list[i]){
            console.log("True");
        }else {
            console.log("False");
        };
    };
}


input:
isUniform(['a','a','a'])
**********************
output:
VM512:6 True
VM512:8 False 

您能给我一些关于我应该改变什么的见解吗?

您尝试实现的正确算法是:

function isUniform (list) {
    var firstItem = list[0];
    for (var i = 0; i < list.length; i++){
        if (firstItem === list[i]) {
            console.log("True");
        } else {
            console.log("False");
        };
    };
}

isUniform(['a','a','a'])
您不需要在for循环中增加i,循环已经这样做了。 您需要迭代,直到i 但更理想的版本是Array.some,这是因为它可以提前终止循环。逻辑稍微颠倒,必须进行双重不平等性检查

我还介绍了使用for循环,这更接近OP的知识

例如

//使用each,这意味着确保每一项都与第一项相同 //但这是否意味着每个项目都需要遍历 函数是uniformlist{ const firstItem=列表[0];; return list.everyi=>i==firstItem; } //使用一些方法,我们可以通过首先停止来提前终止循环 //不相等的项,。而不是结果。 函数isUniform2list{ const firstItem=列表[0];; return!list.somei=>i!==firstItem; } //使用好的旧for循环 //这基本上是像数组一样工作的。有些,基本上比较每个项目 //对于第一种情况,一旦我们得到一个差分,返回false,如果我们将其全部 //通过数组,它一定意味着所有的元素都相等。 函数isUniform3list{ var firstItem=列表[0]; 对于变量i=0;iconsole.logisUniform3['a','b','a'];有些会更有效吗?如果数组为空,则返回false,在第一个非条件时停止check@Zooly是的,好主意。我也将添加该版本..很好的解决方案,但我还没有介绍这些方法。想用我目前掌握的知识解决这个任务。谢谢你的解决方案@MukhammadSobirov没问题,我将使用for循环进行更新。请给我们打个勾。@MukhammadSobirov Ok,更新为for循环,因此它与您的版本非常相似。谢谢,但您的算法在输入错误时不起作用,请使用isUniform[1,2,3,5]进行尝试。它的行为方式相同…isUniform[1,2,3,5]打印真、假、假、假。因为第一项等于1,而不是下面的。算法有效。我得想办法在整个函数中只打印一个真或假。明白了!我本不该安慰你的logTrue。。。应该使用return true