【发布时间】:2017-12-25 14:49:05
【问题描述】:
我将不胜感激。
已对此进行了编辑,以更清楚地描述应如何评估数组。
我试图弄清楚如何比较多维数组的所有元素以确定这些元素是否包含一个真实的集合。
标准
- 我不会提前知道阵列会有多大(可能是 2,可能是 1000)。
- 每个数组元素都有两个需要比较的特征(颜色和类型)。
- 如果任何两个元素共享任何特征值,则所有元素都必须共享该特征值。
- “颜色”和“类型”的值可以作为纯文本进行比较,它们是否匹配,不可能有任何变化。 IE。绿色!=格林。
- 该函数只需要根据是否为真集合返回真或假。
- 可以使用 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”类型。
var obj = {
'Element001' : { 'ID' : '1', 'Color' : 'blue', 'Type' : 'c' },
'Element002' : { 'ID' : '2', 'Color' : 'blue', 'Type' : 'c' }
'Element003' : { 'ID' : '21', 'Color' : 'blue', 'Type' : 'c' }
};
以下数组的计算结果应为“FALSE”,因为两个元素共享“红色”颜色。每条规则:如果任何两个元素共享一个特性,它们都必须共享它。因此,所有元素都必须是红色的。同样在这个例子中,没有元素共享一个类型。但即使它们都是“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' }
};
【问题讨论】:
-
@CIsForCookies 因为他只想比较
Color和Type。不是整个对象。 -
@ClsForCookies 有时会产生假阴性。
-
给出的格式不是一个实际的数组。它是一个嵌套对象,其中第一级属性使用的名称或多或少被滥用来暗示顺序。为什么不使用实际的对象数组?
-
@ClsForCookies 当这让我感到厌烦时,字符串表示很长。不要以为我能给你一个可靠的案例。
-
@Paul 我不确定长字符串表示,但
JSON.stringify()确实依赖于相同的属性顺序。即使顺序不同,从技术上讲,2 个对象仍然是相同的。这就是它产生假阴性的地方。
标签: javascript arrays json