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

时间:2017-07-20 05:11:15

标签: javascript arrays json

我将不胜感激任何帮助。

这已经过编辑,可以更清楚地描述如何评估数组。

我试图找出如何比较多维数组的所有元素以确定元素是否包含真集。

标准

  1. 我不知道阵列会提前多大(可能是2,可能是1000)。
  2. 每个数组元素都有两个需要比较的特征(颜色和类型)。
  3. 如果任何两个元素共享任何charactistic值,则所有元素必须共享该特征值。
  4. 'color'&的值'type'可以比较为直文,它们是否匹配,不可能有变化。即格林!=格林。
  5. 该函数只需要根据它是否为真集返回true或false。
  6. 可以使用JavaScript,PHP或C语言提供任何帮助。我可以推断。
  7. 数组示例

    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'  }  
    };
    

2 个答案:

答案 0 :(得分:1)

按照以下示例



var obj = {  
    'Element001' : {  
        'ID' : '1',  
        'Color' : 'Red',  
        'Type' : 'X'  
    },  
    'Element002' : {  
         'ID' : '2',  
         'Color' : 'Green',  
         'Type' : 'X'  
    }  
};

for(var x in obj){
    if(obj[x].Color=="Green")
    {
       console.log("ID : " +obj[x].ID+" has color Green");
    }
}




如果您不想这样,那么您可以使用此代码



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

var Keys=Object.keys(obj);
var _color=obj[Keys[0]].Color;
var _type=obj[Keys[0]].Type;
var _isSameColor=true;
var _isSameType=true;
for(var x=1;x<Keys.length;x++){
    _isSameColor=_isSameColor&_color==obj[Keys[x]].Color;
    _isSameType=_isSameType&_type==obj[Keys[x]].Type;
}
console.log(_isSameColor);
console.log(_isSameType);
if(_isSameColor||_isSameType){
   alert("True");
}
else{
   alert("False");
}
&#13;
&#13;
&#13;

答案 1 :(得分:0)

你应该使用方括号:[]

&#13;
&#13;
var obj = [  
        'Element_1' : {  
            'ID' : '1',  
            'Color' : 'Red',  
            'Type' : 'X'  
        },  
        'Element_2' : {  
             'ID' : '2',  
             'Color' : 'Green',  
             'Type' : 'X'  
        }  
    ];

   for(var i = 0 ; i++ ;  i < obj.length){
    if(obj[i].Color=="Green") {
     console.log("ID : " +obj[i].ID+" has color Green");
    }
   }
&#13;
&#13;
&#13;

相关问题