Javascript 如何比较多维数组中的每个元素?

Javascript 如何比较多维数组中的每个元素?,javascript,arrays,json,Javascript,Arrays,Json,我将非常感谢您的帮助 已对其进行编辑,以更清楚地描述应如何评估阵列 我试图找出如何比较多维数组中的所有元素,以确定这些元素是否包含一个真集合 标准 我不知道阵列会提前到多大(可能是2个,可能是1000个) 每个数组元素都有两个需要比较的特征(颜色和类型) 如果任意两个元素共享任何特征值,则所有元素都必须共享该特征值 “颜色”和“类型”的值可以作为纯文本进行比较,它们是否匹配,不可能有任何变化。即绿色!=格林 函数只需要根据是否为真集返回真或假 可以用JavaScript、PHP或C提供任何帮助。

我将非常感谢您的帮助

已对其进行编辑,以更清楚地描述应如何评估阵列

我试图找出如何比较多维数组中的所有元素,以确定这些元素是否包含一个真集合

标准

  • 我不知道阵列会提前到多大(可能是2个,可能是1000个)
  • 每个数组元素都有两个需要比较的特征(颜色和类型)
  • 如果任意两个元素共享任何特征值,则所有元素都必须共享该特征值
  • “颜色”和“类型”的值可以作为纯文本进行比较,它们是否匹配,不可能有任何变化。即绿色!=格林
  • 函数只需要根据是否为真集返回真或假
  • 可以用JavaScript、PHP或C提供任何帮助。我可以推断 数组示例

    var obj = {  
        'Element001' : {  
            'ID' : 'value',  
            'Color' : 'value',  
            'Type' : 'value'  
        },  
        'Element002' : {  
             'ID' : 'value',  
             'Color' : 'value',  
             'Type' : 'value'  
        }  
        ...  
    };  
    
    不同数组将如何计算的示例

    以下数组的计算结果应为“TRUE”,因为所有元素均为红色,并且没有元素共享同一类型

    var obj = {  
        'Element001' : {  'ID' : '1', 'Color' : 'red', 'Type' : 'b'  },  
        'Element002' : {  'ID' : '2', 'Color' : 'red',  'Type' : 'a'  }  
        'Element003' : {  'ID' : '21', 'Color' : 'red', 'Type' : 'c'  }  
    };  
    
    以下数组的计算结果应为“TRUE”,因为所有元素都是“b”类型,并且没有元素共享颜色

    var obj = {  
        'Element001' : {  'ID' : '1', 'Color' : 'red', 'Type' : 'b'  },  
        'Element002' : {  'ID' : '2', 'Color' : 'blue', 'Type' : 'b'  }  
        'Element003' : {  'ID' : '21', 'Color' : 'green', 'Type' : 'b'  }  
    };  
    
    以下数组的计算结果应为“TRUE”,因为所有元素均为“蓝色”,且所有元素均为“c”类型

    以下数组的计算结果应为“FALSE”,因为两个元素共享一种颜色“red”。根据规则:如果任何两个元素共享一个特征,那么它们都必须共享该特征。因此,所有元素都必须为红色。同样在本例中,没有元素共享一个类型。但是,即使它们都是“a”类型,由于颜色属性,它仍然会计算为“FALSE”

    var obj = {  
        'Element001' : {  'ID' : '1', 'Color' : 'red', 'Type' : 'b'  },  
        'Element002' : {  'ID' : '2', 'Color' : 'red', 'Type' : 'a'  },  
        'Element003' : {  'ID' : '21', 'Color' : 'blue', 'Type' : 'c'  }  
    };
    
    另一个评估为“FALSE”的集合是没有共享特征的集合。
    像这样的一个

    var obj = {  
        'Element001' : {  'ID' : '1', 'Color' : 'red', 'Type' : 'b'  },  
        'Element002' : {  'ID' : '2', 'Color' : 'green', 'Type' : 'a'  },  
        'Element003' : {  'ID' : '21', 'Color' : 'blue', 'Type' : 'c'  }  
    };
    

    遵循下面的例子

    var obj={
    'Element001':{
    “ID”:“1”,
    “颜色”:“红色”,
    “Type”:“X”
    },  
    'Element002':{
    “ID”:“2”,
    “颜色”:“绿色”,
    “Type”:“X”
    }  
    };
    用于(obj中的var x){
    如果(obj[x]。颜色=“绿色”)
    {
    log(“ID:+obj[x].ID+”为绿色”);
    }
    
    }
    您应该使用方括号符号:[]
    var obj=[
    '元素_1':{
    “ID”:“1”,
    “颜色”:“红色”,
    “Type”:“X”
    },  
    '元素_2':{
    “ID”:“2”,
    “颜色”:“绿色”,
    “Type”:“X”
    }  
    ];
    对于(变量i=0;i++;i}
    @CIsForCookies,因为他只想比较
    颜色
    类型
    。不是整个对象。@ClsForCookies有时会产生假阴性。给定的格式不是实际数组。它是一个嵌套对象,其中第一级属性使用的名称或多或少被滥用以建议序列。为什么不使用一个实际的对象数组?@ClsForCookies当这有点我,字符串表示相当长。不要以为我能给你一个可靠的例子。@Paul我不确定长字符串表示法,但
    JSON.stringify()
    确实依赖于相同的属性顺序。从技术上讲,即使顺序不同,两个对象仍然是相同的。这就是它产生假阴性的地方。请解释更多,这样我就可以给出这样的答案,我没有得到你们想要的,我没有测试一个特定的值。我不知道这些值可能是什么。我补充了一些例子。谢谢你的时间。试试第二个例子,它会像你想的那样有用。如果你有解决方案,请接受答案。担心回到这个问题上会花点时间。第二个是完美的。我完全可以用C语言重写它,并将其封装在函数中。谢谢你的帮助!
    var obj = {  
        'Element001' : {  'ID' : '1', 'Color' : 'red', 'Type' : 'b'  },  
        'Element002' : {  'ID' : '2', 'Color' : 'green', 'Type' : 'a'  },  
        'Element003' : {  'ID' : '21', 'Color' : 'blue', 'Type' : 'c'  }  
    };