Javascript 如何比较多维数组中的每个元素?
我将非常感谢您的帮助 已对其进行编辑,以更清楚地描述应如何评估阵列 我试图找出如何比较多维数组中的所有元素,以确定这些元素是否包含一个真集合 标准Javascript 如何比较多维数组中的每个元素?,javascript,arrays,json,Javascript,Arrays,Json,我将非常感谢您的帮助 已对其进行编辑,以更清楚地描述应如何评估阵列 我试图找出如何比较多维数组中的所有元素,以确定这些元素是否包含一个真集合 标准 我不知道阵列会提前到多大(可能是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' }
};