Javascript 如何在某些条件下更改对象属性的值

Javascript 如何在某些条件下更改对象属性的值,javascript,object,Javascript,Object,我有一件像这样的东西 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

我有一件像这样的东西

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 
    }*/
});

通过
object.keys()
获取对象的属性,然后使用
some()
迭代属性
toLowerCase()
函数来比较属性和国家名称。在
if
语句中,如果找到键,则使用
returntrue
中断循环

var obj={
美国:没错,
新西兰:错,
加拿大:是的,
日本:错,,
中国:对,,
Ind:错
};
var国家={
姓名:'IND'
};
key(obj).some(key=>{
if(key.toLowerCase()==country.name.toLowerCase()){
obj[key]=!obj[key];
返回true;
}
});

控制台日志(obj)
通过
object.keys()
获取对象的属性,然后使用
some()
迭代属性
toLowerCase()
函数比较属性和国家名称。在
if
语句中,如果找到键,则使用
returntrue
中断循环

var obj={
美国:没错,
新西兰:错,
加拿大:是的,
日本:错,,
中国:对,,
Ind:错
};
var国家={
姓名:'IND'
};
key(obj).some(key=>{
if(key.toLowerCase()==country.name.toLowerCase()){
obj[key]=!obj[key];
返回true;
}
});
控制台日志(obj)
更改为真或假。将站点设置为当前值

使用
Object.keys
函数的解决方案:

var Obj={美国:正确,新西兰:错误,加拿大:正确,日本:错误,中国:正确,印度:错误},
键=对象。键(Obj),
len=键。长度,
countryName='IND';
而(len--){
如果(键[len].toLowerCase()==countryName.toLowerCase()){
Obj[keys[len]=!Obj[keys[len]];
break;//避免重复迭代
}
}
控制台日志(Obj)
更改为真或假。将站点设置为当前值

使用
Object.keys
函数的解决方案:

var Obj={美国:正确,新西兰:错误,加拿大:正确,日本:错误,中国:正确,印度:错误},
键=对象。键(Obj),
len=键。长度,
countryName='IND';
而(len--){
如果(键[len].toLowerCase()==countryName.toLowerCase()){
Obj[keys[len]=!Obj[keys[len]];
break;//避免重复迭代
}
}
控制台日志(Obj)如果找到,可以使用并退出循环

var obj={美国:正确,新西兰:错误,加拿大:正确,日本:错误,中国:正确,印度:错误},
countryName='IND';
对象。键(obj)。一些(函数(k){
if(k.toLowerCase()==countryName.toLowerCase()){
obj[k]=!obj[k];
返回true;
}
});
控制台日志(obj)如果找到,可以使用并退出循环

var obj={美国:正确,新西兰:错误,加拿大:正确,日本:错误,中国:正确,印度:错误},
countryName='IND';
对象。键(obj)。一些(函数(k){
if(k.toLowerCase()==countryName.toLowerCase()){
obj[k]=!obj[k];
返回true;
}
});

控制台日志(obj)您可以更改对象的属性,如
obj[countryName]=!obj[countryName]。条件通过时的值

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);

您可以更改对象的属性,如
obj[countryName]=!obj[countryName]。条件通过时的值

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);

预期产量是多少?您的问题不清楚如何更改标志-更改为什么?@brk
如果(countryName:IND)
则在对象值中将更改为true@RomanPerekhrest更改为真或假。Opsite到当前值为什么不使用与请求国家/地区相同的密钥大小写?否则,带键的结构就没有意义了。预期的输出是什么?您的问题不清楚如何更改标志-更改为什么?@brk
如果(countryName:IND)
则在对象值中将更改为true@RomanPerekhrest更改为真或假。Opsite到当前值为什么不使用与请求国家/地区相同的密钥大小写?否则,带有键的结构就没有意义了。