Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript js对象问题_Javascript_Object - Fatal编程技术网

Javascript js对象问题

Javascript js对象问题,javascript,object,Javascript,Object,我使用一个对象来检查一组单选按钮是否有一个精确的值,如在“rule”对象上设置的值。以下是一个例子: arr = {a:"1", b:"1", c:"1", c:"2"}; //that's my object rule var arr2={}; //here I create my second array with charged value $("#form_cont input:checked").each(function() { arr2[$(this).attr("n

我使用一个对象来检查一组单选按钮是否有一个精确的值,如在“rule”对象上设置的值。以下是一个例子:

arr = {a:"1", b:"1", c:"1", c:"2"}; //that's my object rule

var arr2={}; //here  I create my second array with charged value 
$("#form_cont input:checked").each(function()
{
    arr2[$(this).attr("name")]=$(this).val();
});
//here I make the check
for (k in arr2)
{
    if (typeof arr[k] !== 'undefined' && arr[k] === arr2[k]) 
    {
        $("#form_cont li[name$='"+k+"']").css('background-color', '');
    }
    else
    {
        $("#form_cont li[name$='"+k+"']").css('background-color', 'pink');
    }
}
问题是当我必须检查“c”键时,我得到的是最后一个值(2),而不是正确的值,这可能是1或2

提前谢谢


ciao,h.

一个对象上不能有两个名称相同的属性。因此,当javascript编译器看到行
arr={a:“1”,b:“1”,c:“1”,c:“2”}自动将其更改为
arr={a:“1”,b:“1”,c:“2”}
让c的最后一个定义覆盖第一个定义

为了有多个值,
arr
的属性
c
需要是一个数组:

arr = {a:["1"], b:["1"], c:["1","2"]}; //that's my object rule
当然,您的有效性检查也必须更改以搜索新数组:

typeof arr[k] !== 'undefined' && contains(arr[k], arr2[k])

函数包含(a,obj){
对于(变量i=0;i
能否将第二个c键更改为d?不,很抱歉,c是可能采用值1或2的无线电名称:-(我可以在数组中设置c,在现有对象中设置concat吗?它可以工作吗?@Eric:谢谢你回答我是否修改for循环以获得c值?@haltman:不,你的其余代码应该可以正常工作。我在IE:typeof arr[k]!='undefined'&&contains(arr[k],arr2[k]中发现这一行有错误)你有什么办法解决它吗?@Eric Mickelsen我在IE7上测试过,错误为“未定义”为空或不是对象再次感谢ciao h。就像经常发生的问题一样,问题在另一点上感谢您的帮助
function contains(a, obj){
  for(var i = 0; i < a.length; i++) {
    if(a[i] === obj){
      return true;
    }
  }
  return false;
}