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

时间:2017-02-08 06:53:44

标签: 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.keys(obj).map(function(i) {
    /*if(countryName == obj.countryName){ // something missing here
        obj.countryName.value 
    }*/
});

4 个答案:

答案 0 :(得分: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 :(得分: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 :(得分: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);

答案 3 :(得分: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);