2017-02-08 66 views
1

我有一个这样的对象。如何在某些条件下更改对象属性的值

Obj : { 
    USA : true 
    NZ : false, 
    Canada : true, 
    Japan : false, 
    China : true 
    Ind : false, 
} 

在我的功能,我在这种情况下我如何改变各自国家的国旗越来越countery.name = IND左右。

我想在这个位置什么是

var countryName = countery.name // Getting some value here. 
Object.keys(obj).map(function(i) { 
    /*if(countryName == obj.countryName){ // something missing here 
     obj.countryName.value 
    }*/ 
}); 
+0

预期产量是多少?你的问题不清楚 – brk

+0

*我如何改变国旗* - 改成什么? – RomanPerekhrest

+0

@brk'if(countryName:IND)'然后在对象值中将更改为true – David

回答

2

变化为true或false。 OPSITE电流值

使用Object.keys功能的解决方案:

var Obj = {USA : true,NZ : false,Canada : true,Japan : false,China : true,Ind : false}, 
 
    keys = Object.keys(Obj), 
 
    len = keys.length, 
 
    countryName = 'IND'; 
 

 
while (len--) { 
 
    if (keys[len].toLowerCase() == countryName.toLowerCase()) { 
 
     Obj[keys[len]] = !Obj[keys[len]]; 
 
     break; // avoiding redundant iterations 
 
    } 
 
} 
 

 
console.log(Obj);

2

通过Object.keys()获取对象的属性,然后使用some()在性能迭代toLowerCase()功能比较属性和国家名称。如果找到密钥,在if语句中使用return true来中断循环。

var obj = { 
 
    USA: true, 
 
    NZ: false, 
 
    Canada: true, 
 
    Japan: false, 
 
    China: true, 
 
    Ind: false 
 
}; 
 

 
var country = { 
 
    name: 'IND' 
 
}; 
 

 
Object.keys(obj).some(key => { 
 
    if(key.toLowerCase() === country.name.toLowerCase()){  
 
    obj[key] = !obj[key]; 
 
    return true; 
 
    } 
 
}); 
 

 
console.log(obj);

1

你可以使用Array#some,如果找到退出循环。

var obj = { USA: true, NZ: false, Canada: true, Japan: false, China: true, Ind: false }, 
 
    countryName = 'IND'; 
 

 
Object.keys(obj).some(function (k) { 
 
    if (k.toLowerCase() === countryName.toLowerCase()) { 
 
     obj[k] = !obj[k]; 
 
     return true; 
 
    } 
 
}); 
 

 
console.log(obj);

1

当条件通过您可以更改对象的属性一样obj[countryName] = !obj[countryName].value

obj = {USA:true, NZ: false, Canada:true,Japan:false,China:true,Ind:false}; 
var countryName = 'Ind'; 

console.log("Before changing the flag:"); 
console.log(obj); 

Object.keys(obj).map(function(i){ 
if (countryName == i) 
    obj[countryName] = !obj[countryName].value; 
}); 

console.log("After changing the flag:"); 
console.log(obj);