Javascript:检查数组的所有元素是否与变量相同,或者没有一个相同

Javascript:检查数组的所有元素是否与变量相同,或者没有一个相同,javascript,arrays,Javascript,Arrays,我有一个javascript变量,它是一个数组数组。下面有一个变量。像这样: var cars = [ ["ford mustang",1955,"red"], ["dodge dart",1963,"green"], ["pontiac",2002,"green"], ] var colour = "blue"; 现在我需要检查每个数组的第三个值是否与变量color相同,或者它们是否都不同。如果其中一个条件为真,我想执行其他一些代码。因此,在上面的示例中,条件为真,

我有一个javascript变量,它是一个数组数组。下面有一个变量。像这样:

var cars = [
    ["ford mustang",1955,"red"],
    ["dodge dart",1963,"green"],
    ["pontiac",2002,"green"],
]

var colour = "blue";
现在我需要检查每个数组的第三个值是否与变量
color
相同,或者它们是否都不同。如果其中一个条件为真,我想执行其他一些代码。因此,在上面的示例中,条件为真,因为没有一个值为“蓝色”。如果它们都是“蓝色”的,那也是真的


希望我已经说清楚了

你需要这样的东西吗

var cars_length = cars.length;
var all_same = true;
var all_different = true;
for(var i=0; i<cars_length; i++)
{
    if(cars[i].[2] == colour)
    {
       all_same = false;
    }
    else
    {
       all_different = false;
    }
}

if(all_same)
{
   console.log('all same');
}
else
{
   if(all_different)
   {
       console.log('all different');
   }
   else
   {
       console.log('nor all same, nor all different');
   }
}
var cars\u length=cars.length;
var all_same=真;
var all_different=真;
对于(变量i=0;i
var color='blue'
var all=真;
var none=真;
对于(变量i=0;i
JavaScript中有两个函数用于此目的:

allCarsAreRed = cars.every(function(car) { return car[2] == 'red' })
atLeastOneCarIsRed = cars.some(function(car) { return car[2] == 'red' })
noRedCars = cars.every(function(car) { return car[2] != 'red' })

看看下面的解决方案

var arr = ["a", "b", "c", "d"]
var allZero = true;
for (var i = 0; i < arr.length; i++) 
{
    if (arr[i][2] != 0) 
    {
        allZero = false;
        break;
    }
}
if (allZero) 
{
    console.log("ALL are Zero");
}
var arr=[“a”、“b”、“c”、“d”]
var allZero=真;
对于(变量i=0;i
我可以想出很多方法来做到这一点。你可以计算匹配的数量,看看它是0还是cars.length。你可以在元素上循环。找到匹配后,如果发现不匹配就停止,并报告失败;找到不匹配后,如果找到匹配就停止。你已经描述了你需要的算法;进行下一步测试p并尝试自己编写代码。使用
else
而不是两次比较。您仍然在比较两次。只需使用
else
,而不是
else if
。谢谢!我曾考虑过将变量设置为false并将其更改为true,但我不知道这是如何工作的。这非常有效。在使用此请确保只获得一次数组变量的长度。不是每次迭代时都获得。这些确实很有效,但它们在IE8或更早版本中不起作用,因此如果您需要支持IE8,则需要为它们添加垫片。@jfriend00:是的,每次您在帖子中提到ES5功能时,都会有人提出此IE8注释。老实说,我觉得这些评论相当误导。首先,没有人“需要”支持IE8,恰恰相反——我们支持得越少,它就越快消亡——对每个人都有好处。其次,更糟糕的是,这些评论吓跑了初学者,让他们远离现代javascript,推广过时的编程实践。@thg435-你无法决定是否有人需要支持IE8。这是他们的决定。我只是补充了一些如果有人需要支持IE8,那么你的答案中的更多信息可能会很有用。为什么这些额外信息会让你和我都感到惊讶。我没有投你的反对票,只是添加了更多信息。这并没有解决问题的多方面问题
var arr = ["a", "b", "c", "d"]
var allZero = true;
for (var i = 0; i < arr.length; i++) 
{
    if (arr[i][2] != 0) 
    {
        allZero = false;
        break;
    }
}
if (allZero) 
{
    console.log("ALL are Zero");
}